লগ 4 নেট সমস্যাগুলি কীভাবে ট্র্যাক করবেন


191

আমি লগ 4 নেট সব সময় ব্যবহার করি তবে একটি জিনিস আমি কখনই বুঝতে পারি না যে কীভাবে অভ্যন্তরে কী চলছে তা কীভাবে বলা যায়। উদাহরণস্বরূপ, আমি আমার প্রকল্পে একটি কনসোল অ্যাপেন্ডার এবং একটি ডাটাবেস অ্যাপেন্ডার পেয়েছি। আমি ডাটাবেস এবং কোডে কিছু পরিবর্তন করেছি এবং এখন ডাটাবেস অ্যাপেন্ডার আর কাজ করে না। আমি অবশেষে বুঝতে পারি, তবে লগ 4 নেট-এর ভিতরে কী চলছে তা যদি আমি দেখতে পেতাম তবে এটি অনেক উপকার করবে।

লগ 4 নেট কি কোনও ধরণের আউটপুট উত্পন্ন করে যা আমি আমার সমস্যার উত্স নির্ধারণের চেষ্টা করতে পারি?

উত্তর:


293

প্রথমে আপনাকে অ্যাপ্লিকেশন কনফিগারেশন ফাইলে এই মানটি সেট করতে হবে:

<configuration>
   <appSettings>
      <add key="log4net.Internal.Debug" value="true"/>
   </appSettings>
</configuration>

তারপরে, আপনি যে ফাইলটিতে আউটপুট সংরক্ষণ করতে চান তা নির্ধারণ করতে আপনি একই .config ফাইলে নিম্নলিখিত কোডটি যুক্ত করতে পারেন:

<configuration>
...

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...
</configuration>

'আমি লগ 4 নেট অভ্যন্তরীণ ডিবাগিং কীভাবে সক্ষম করব?' এর অধীনে আপনি আরও বিশদ বিশদ ব্যাখ্যা পেতে পারেন? মধ্যে log4net FAQ পৃষ্ঠায়


10
কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনার অ্যাপ্লিকেশনটির অধীনে যে প্রক্রিয়া চলছে তার যে পথে আপনি লগিং পাঠ্য ফাইলটি তৈরি করতে চান তার অধিকার রয়েছে (উপরের উদাহরণে "সি: \ tmp \ log4net.txt")
এনএমআরটি

3
দেখে মনে হচ্ছে অভ্যন্তরীণ ডিবাগিংয়ের টাইমস্ট্যাম্প নেই
snit80

4
আমি থেকে পরিবর্তিত C:\tmp\log4net.txtকরা C:\log4net.txt, তাহলে এটি টেক্সট ফাইল তৈরি করতে পারেন।
ফ্রাঙ্ক মায়াট থু

6
আমি একটি মজার উপায় খুঁজে পেয়েছি। নিশ্চিত করুন যে এটি <configSections></configSections>প্রথম প্রবেশের নীচে <configuration>। অন্যথায় আপনি একটি ত্রুটি দিয়ে শেষ।
নিক

2
এটি লগ ফাইলটিতে প্রবেশের সময় দেখায় না। আমি সেটিং বৈশিষ্ট্যাবলী চেষ্টা করেছি traceOutputOptions="TimeStamp"এবং traceOutputOptions="DateTime"addট্যাগটি কিন্তু এটি লগ ফাইল বিষয়বস্তু কিছুই পরিবর্তন। ট্রেস লগ ফাইলটিতে প্রতিটি লাইন / প্রবেশের সময় প্রদর্শনের জন্য কেউ কীভাবে লগ 4 নেট সেট আপ করতে জানেন?
ইউলিসেস আলভেস

43

আপনি যদি লগ 4 নেট কনফিগার ফাইল ব্যবহার করেন তবে উপরের নোডটি এখানে পরিবর্তন করে ডিবাগিংটি চালু করতে পারেন:

<log4net debug="true">

কনফিগারটি পুনরায় লোড হয়ে গেলে এবং আপনার ট্রেস শ্রোতাকে সঠিকভাবে সেটআপ করা অনুমান করে এটি কাজ করবে।


6
একবার এই পতাকাটি সক্ষম হয়ে গেলে - আপনি ভিজ্যুয়াল স্টুডিওর আউটপুট উইন্ডোর মধ্যে লগ 4 নেট থেকে ডায়াগনস্টিক লগগুলি দেখতে সক্ষম হবেন
নরেন

24

উপরের উত্তরের পাশাপাশি, আপনি এই লাইনটি সি: \ tmp \ log4net.txt আউটপুটটির পরিবর্তে রিয়েলটাইমটিতে লগ দেখতে ব্যবহার করতে পারেন।

log4net.Util.LogLog.InternalDebugging = true;

উদাহরণস্বরূপ, একটি কনসোল অ্যাপ্লিকেশনে, আপনি এটি যুক্ত করতে পারেন এবং তারপরে রিয়েলটাইমে আউটপুটটি দেখতে পারেন। আপনি পরীক্ষা করছেন এমন অ্যাপেন্ডারের সাথে কী হচ্ছে তা দেখার জন্য একটি ছোট পরীক্ষা জোড়ায় লগ 4 নেট ডিবাগ করার পক্ষে ভাল।


8

আপনার প্রবেশের বিন্দুটি মূল অ্যাপ্লিকেশনটি লগ 4নেটে কিছু লগ করেছে তা নিশ্চিত করুন। এগুলির মধ্যে একটি দিন:

private static ILog logger = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
    logger.InfoFormat("{0} v.{1} started.", Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version.ToString());

২.০.৮ সহ আমার একটি আকর্ষণীয় পরিস্থিতি ছিল। আমি একটি লাইব্রেরি প্রকল্প এবং একটি পরীক্ষামূলক প্রকল্প প্রকল্প তৈরি করেছি যা এর ক্ষমতাগুলি ডেমো করবে। লগইনটি প্রকল্পটি লগ 4 নেট ব্যবহারের জন্য স্থাপন করা হয়েছিল যেমন এক্সপি প্রকল্প। এক্সিপ প্রজেক্টটি কনফিগারটি নিবন্ধ করার জন্য অ্যাসেমব্লিনফো বৈশিষ্ট্য ব্যবহার করেছে, তবুও আমি কনসোল বা লগ ফাইলের জন্য কোনও লগিং আউটপুট পাচ্ছি না। আমি যখন লগ 4 নেট অভ্যন্তরীণ ডিবাগ লগিং চালু করি, তখন কনসোলে কিছু অভ্যন্তরীণ বার্তা লেখা হয়েছিল তবে এখনও আমার সাধারণ লগগুলির কোনওটিই নেই। কোনও ত্রুটি রিপোর্ট করা হচ্ছে না। আমি যখন আমার প্রোগ্রামটিতে উপরের কোডটি যুক্ত করি তখন এটি সমস্ত কাজ শুরু করে। লগ 4 নেট অন্যথায় সঠিকভাবে সেট আপ হয়েছিল।


1
আমার পাশাপাশি সংরক্ষণ করা হয়েছে :-)
কস্টা

2

যদি অভ্যন্তরীণ লগ আপনাকে পর্যাপ্ত তথ্য না দেয় তবে উত্স কোডটি তৈরি এবং ডিবাগ করা খুব সহজ । আপনি যদি এটি আপনার উন্নয়ন প্রকল্পের সাথে মিশতে না চান তবে একটি সাধারণ কনসোল অ্যাপ্লিকেশন যুক্ত করুন যা কেবলমাত্র একটি বার্তা লগ করে, আপনার প্রকল্পটির log4net.configএই অ্যাপ্লিকেশনটিতে অনুলিপি করে এবং প্রশ্নে শ্রেণি ডিবাগ করে।


2

লগ 4নেট ২.০.৮ এ লগইনটি আলাদা ডিএলএল দিয়ে লগইন করা সম্ভব হবে বলে মনে হচ্ছে না। আমি যদি এটি চেষ্টা করে দেখি তবে ফলাফলগুলি খুব অদ্ভুত: কোনও লগিং আর করা হয় না। এবং ডিবাগ বিকল্পের সাহায্যে লগ 4 নেট এর সূচনা কোনও ত্রুটি দেখায় না।

যেমন K0D4 বলেছে, আপনার মূল-মডিউলটিতে লগ 4 নেট সম্পর্কিত একটি তথ্যসূত্র থাকা উচিত এবং প্রোগ্রামার শুরু হওয়ার পরে এটি একবার কল করা উচিত এবং সব ঠিক আছে।

লগ 4 নেট এর পরবর্তী সংস্করণে, এই বাগটি সম্ভবত সংশোধন করা হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.