একাধিক ফাইলে লিখতে লগ 4 নেট কনফিগার করুন


130

আমি একই প্রক্রিয়া থেকে 2 টি পৃথক লগ ফাইলগুলিতে লগ লিখতে চাই।

লগ 4 নেট ব্যবহার করে কি সম্ভব কাজটি করা সম্ভব?

আমি প্রতিটি লগ ফাইল পৃথক বার্তা লিখতে হবে। আমি কীভাবে একটি নির্দিষ্ট অ্যাপেন্ডারের কাছে একটি বার্তা লিখতে পারি?


3
আপনি আলাদা অ্যাপেন্ডারগুলিতে লগ করতে পারবেন না - আপনাকে বিভিন্ন লগারকে কনফিগার করতে হবে এবং প্রত্যেকটির সাথে উপযুক্ত অ্যাপেন্ডার সংযুক্ত করতে হবে। তারপরে বিভিন্ন বার্তায় বিভিন্ন বার্তা লগ করুন।
বিনয় সাজিপ

উত্তর:


82

হ্যাঁ, আপনার লগারে কেবল একাধিক ফাইল অ্যাপেন্ডার যুক্ত করুন। উদাহরণ স্বরূপ:

<log4net>
    <appender name="File1Appender" type="log4net.Appender.FileAppender">
        <file value="log-file-1.txt" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %message%newline" />
        </layout>
    </appender>
    <appender name="File2Appender" type="log4net.Appender.FileAppender">
        <file value="log-file-2.txt" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %message%newline" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="File1Appender" />
        <appender-ref ref="File2Appender" />
    </root>
</log4net>

5
চমৎকার .. :) তবে, প্রতিটি লগ ফাইলে আমার পৃথক বার্তা লিখতে হবে। আমি কীভাবে একটি নির্দিষ্ট অ্যাপেন্ডারের কাছে একটি বার্তা লিখতে পারি? ধন্যবাদ। অফার
অফার

2
@ অফার- এটি কীভাবে করবেন সে সম্পর্কে আমার উত্তর দেখুন।
রিচার্ডডো

1
আপনি যদি ফাইল 1 এপেন্ডারটি DEBUG ত্রুটিগুলি লগ করতে চান এবং ফাইল 2 অ্যাপেন্ডার ERROR ত্রুটিগুলিতে লগ করতে চান?
জেসন স্ট্যাথাম

আমি অনুরূপ জিনিস অর্জন করার চেষ্টা করছি। আপনি যদি আমার প্রশ্নের উত্তর দিতে পারেন তবে খুশি হবেন: stackoverflow.com/questions/24886364/…
আশীষ চরণ

202

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

<log4net>
  <appender name="SomeName" type="log4net.Appender.RollingFileAppender">
    <file value="c:/Console.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
  </appender>
  <appender name="Summary" type="log4net.Appender.FileAppender">
    <file value="SummaryFile.log" />
    <appendToFile value="true" />
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="SomeName" />
  </root>
  <logger additivity="false" name="Summary">
    <level value="DEBUG"/>
    <appender-ref ref="Summary" />
  </logger>
</log4net>

তারপরে কোডে:

ILog Log = LogManager.GetLogger("SomeName");
ILog SummaryLog = LogManager.GetLogger("Summary");
Log.DebugFormat("Processing");
SummaryLog.DebugFormat("Processing2"));

এখানে সি: / কনসোল.টেক্সটে "প্রসেসিং" থাকবে ... এবং \ সংক্ষিপ্ত ফাইল.লগটিতে "প্রসেসিং 2" থাকবে


58
আমি কেবলমাত্র লগারের অ্যাডিটিভিটি = "মিথ্যা" বৈশিষ্ট্যের দিকে মনোযোগ দিতে চেয়েছিলাম যা সমস্ত কিছুকে রুটে প্রবেশ করতে বাধা দেয়।
জেসন হার্নান্দেজ

1
এটি লগ 4 নেট এর শক্তির দুর্দান্ত উদাহরণ। ধন্যবাদ!
ক্রাশ করুন

5
উপরে কনফিগারেশন অনুপস্থিত <layout> ... </layout>, এটি ছাড়া আমি লগ ফাইলে কোনও বার্তা দেখতে পাইনি।
ক্রনাস্টেনা

@ ক্রনাস্টেনা আপনি কি নিশ্চিত যে আপনিই এই পরিবর্তনটি করেছেন?
গ্যারি

1
: @Craig যে ব্যবহার সম্পর্কে আরও এই প্রশ্ন দেখতে পাবেন stackoverflow.com/questions/1999382/...
গ্যারি

60

বিনয় সঠিক। তার উত্তরে আপনার মন্তব্যের জবাবে আপনি এটি করতে পারেন এমন একটি উপায় নীচে:

<root>
    <level value="ALL" />
    <appender-ref ref="File1Appender" />
</root>
<logger name="SomeName">
    <level value="ALL" />
    <appender-ref ref="File1Appender2" />
</logger>

অতীতে আমি এইভাবেই করেছি। তারপরে অন্য লগের জন্য এই জাতীয় কিছু:

private static readonly ILog otherLog = LogManager.GetLogger("SomeName");

এবং আপনি নিম্নলিখিত হিসাবে আপনার সাধারণ লগার পেতে পারেন:

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

এটি কীভাবে কাজ করে তা বুঝতে ডকুমেন্টেশনের লগার এবং সংযোজন বিভাগ পড়ুন ।


3
আমি এই আছে একই আমার অ্যাপ্লিকেশানগুলি এক সেটআপ এবং এটা আমার জন্য :( কাজ স্বল্পতা
Román

1
এই আলোচনাটি খুব পুরানো ... আশা করি আপনি উত্তর দিতে পারবেন ... আমি আপনার পদ্ধতির চেষ্টা করেছি কিন্তু দুজন লগার একই বার্তা লগ করেছেন। যেমন log.Info ("") এবং অন্যান্য লগ। ইনফো ("") একইসাথে উভয় লগ ফাইল বার্তা লিখুন।
সুথারমোনিল

1
@ ড্যানিয়েল_রেইন হ্যাঁ, আমি যা করেছি তা আমি পৃথক ফাইল পাথের সাথে দুটি অ্যাপেন্ডার তৈরি করার জন্য অ্যাপেন্ডার ব্লকটি ব্যবহার করেছি (ঠিক ঠিক এর উপরে একটিটির মতো) .... সুতরাং কার্যকরভাবে আমাদের দুটি নামক ব্লক রয়েছে: ফাইল অ্যাপেন্ডার 1 এবং ফাইল অ্যাপেন্ডার 2 ... ।
সুথারমোনিল

1
@ সুথারমোনিল লগার নোডে কেবল 'অ্যাডিটিভিটি' = "মিথ্যা" যুক্ত করুন, যেমন গ্যারি উত্তর দিয়েছিলেন এবং জেসন হার্নান্দেজ হাইলাইট করেছেন। এই ক্ষেত্রে এটি এখনও otherLog.Info ( "") থেকে root- র মধ্যে সব বার্তা কিন্তু শুধুমাত্র বার্তা করা হবে File1Appender2 উপস্থিত হবে
freedomn-M

এখন পর্যন্ত সবচেয়ে সঠিক উত্তর।
ফ্যাব্রিকিও

41

আমি সমস্ত বার্তা রুট লগারে লগ করতে চেয়েছিলাম, এবং ত্রুটিযুক্ত একটি পৃথক লগ রাখতে এখানে এটি কীভাবে করা যায় তা এখানে:

<log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="allMessages.log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date  %-5level %logger  - %message%newline" />
        </layout>
    </appender>

    <appender name="ErrorsFileAppender" type="log4net.Appender.FileAppender">
        <file value="errorsLog.log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date  %-5level %logger  - %message%newline" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ERROR" />
            <levelMax value="FATAL" />
        </filter>
    </appender>

    <root>
        <level value="ALL" />
        <appender-ref ref="FileAppender" />
        <appender-ref ref="ErrorsFileAppender" />
    </root>
</log4net>

ফিল্টার উপাদান ব্যবহার লক্ষ্য করুন।


0

দুটি বা ততোধিক ফাইলগুলিতে লগগুলি কনফিগার করতে নীচে XML কনফিগারেশন ব্যবহার করুন,

<log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logs\log.txt" />         
      <appendToFile value="true" /> 
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">           
        <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
      </layout>
    </appender>
     <appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender">
      <file value="logs\log1.txt" />         
      <appendToFile value="true" /> 
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">        
        <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="All" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
     <logger additivity="false" name="RollingLogFileAppender2">
    <level value="All"/>
    <appender-ref ref="RollingLogFileAppender2" />
    </logger>
  </log4net>

এক্সএমএল কনফিগারেশন উপরে দুটি পৃথক ফাইল লগ ইন।

প্রোগ্রামারগতভাবে লগার নির্দিষ্ট উদাহরণ পেতে,

ILog logger = log4net.LogManager.GetLogger ("RollingLogFileAppender2");

আপনি বহুগুণ ফাইলগুলিতে লগ ইন করার জন্য লগ 4 নেট মূল উপাদানটির মধ্যে দুটি বা আরও বেশি সংযোজনকারী উপাদান যুক্ত করতে পারেন।

উপরের এক্সএমএল কনফিগারেশন কাঠামো বা আপনার অ্যাপ্লিকেশনটির জন্য কোন অ্যাপেন্ডর সেরা, সে সম্পর্কে আরও তথ্য নীচের লিঙ্ক থেকে বিশদটি পড়ুন,

https://logging.apache.org/log4net/release/manual/configration.html https://logging.apache.org/log4net/release/sdk/index.html

আশা করি এটি সাহায্য করবে।

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