লগ 4 নেট দৈনিক ফাইলের নাম ফাইলের তারিখের সাথে ঘূর্ণায়মান


উত্তর:


102

আপনার লগ 4 নেট কনফিগারেশন ফাইলে রোলিংফাইলে অ্যাপেন্ডেন্ডারের সাথে নিম্নলিখিত প্যারামিটারটি ব্যবহার করুন:

<param name="DatePattern" value="dd.MM.yyyy'.log'" />

27
প্রদর্শিত হবে এটি একটি কনফিগার উপাদান হিসাবে প্রচারিত হয়েছে: <তারিখের প্যাটার্ন মান = "dd.MM.yyyy'.log '" /> চিয়ার্স!
লংদা

3
@mstaessen <preserveLogFileNameExtension value="true" />হ'ল সঠিক বাক্য গঠন এবং এটি দুর্দান্ত উত্তর। ক্ষতি কীভাবে ঘটেছিল, আমি জিজ্ঞাসা করতে পারি?
ল্যারি বি

1
আমি যদি সঠিকভাবে স্মরণ করি তবে এটি এমনটি হয়েছিল। প্রারম্ভকালে, log4net রোলিং ক্রমের প্রথম ফাইলের নাম তৈরি করে। এটি সনাক্ত করবে যে ফাইলটি ইতিমধ্যে বিদ্যমান আছে এবং তারপরে দ্বিতীয় ফাইলটিতে রোল করার সিদ্ধান্ত নেবে, কিন্তু যখন এটি একটি ইতিমধ্যে উপস্থিত রয়েছে, তখন এটি রোল করার সিদ্ধান্ত নেয় না বরং পরিবর্তে এটি সাফ করে এবং দ্বিতীয় লগ ফাইলের সমস্ত কিছু ওভাররাইট করে। আপনার ক্লিয়ার করা সময়সীমার লগগুলির দরকার না হওয়া পর্যন্ত এটি সম্পূর্ণ
নজরে না পড়ে

207
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <file value="logs\" />
  <datePattern value="dd.MM.yyyy'.log'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>

আমি মনে করি @ মুন যেমন করেছিলেন তেমন সমস্যার সমাধান করার জন্য কী পরামিতিটির মূল বিষয়টি আপনার হাইলাইট করা উচিত। তবে আমি আপনার উত্তরের পক্ষেও ভোট দিয়েছি।
ডেডিপোপার

1
এটি আমার জন্য কাজ করেছে স্ট্যাটিকলগফিলনাম উপাদান (এবং ফাইল উপাদানটির জন্য মান বৈশিষ্ট্যটি নোট করুন) এর সাথে মিল রেখে ডেটপ্যাটার উপাদান ছিল
মিচেস

সম্পূর্ণ উত্তর!
নাগেশ

32

রোলিংলগফাইলে অ্যাপেন্ডেন্ডারের জন্য আপনার এই উপাদানগুলি এবং মানগুলিও দরকার:

<rollingStyle value="Date" />
<staticLogFileName value="false" />

3
এটি কাজ করে তবে ফাইল এক্সটেনশনের পরে তারিখ সংযোজন করে। উদাহরণস্বরূপ আমি লগ ফাইলগুলি ত্রুটিযুক্ত.লগ্ল্যাগ1111104 এর মতো পাই - ফাইলের নামটি একটু ভাল করে ফর্ম্যাট করার কোনও উপায় কি কেউ জানেন?
লস্টনোমড311

: এখানে কিভাবে ফাইল নাম টা ভাল ফরম্যাট এর stackoverflow.com/questions/615092/...
LostNomad311

স্ট্যাটিকলগফিলনাম কীসের জন্য ব্যবহৃত হয়? আমি কেবল চাই যে লগ ফাইলটি দিন শেষ হওয়ার পরে কোনও নতুন নামে রোল করা হোক। আমি একটি লগ মনিটর ব্যবহার করতে চাই যা প্রতিটি সময় একটি নির্দিষ্ট দেখায়।
সূর্যের

21

লগ 4 নেট ১.২.১৩ ব্যবহার করে আমরা ফাইলের নামের তারিখের সময় দেওয়ার জন্য নিম্নলিখিত কনফিগারেশন সেটিংস ব্যবহার করি।

<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />

যা নিম্নলিখিত সম্মেলনে ফাইলগুলি সরবরাহ করবে: logname-2015-04-17.txt

এটি দিয়ে আপনি প্রতিদিন 1 লগ রাখছেন তা নিশ্চিত করার জন্য নিম্নলিখিতটি রাখা সাধারণত সেরা।

<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />

ফাইলের আকারটি যদি উদ্বেগের বিষয় থাকে তবে নীচেরগুলি 5MB আকারের 500 টি ফাইলকে নতুন দিনের প্রসার না হওয়া পর্যন্ত অনুমতি দেয়। কাউন্ট ডাইরেকশনটি ফাইলের আরোহী বা বর্ধনের সংখ্যা নির্ধারণ করে যা বর্তমানে নেই which

 <maxSizeRollBackups value="500" />
 <maximumFileSize value="5MB" />
 <rollingStyle value="Composite" />
 <datePattern value="yyyyMMdd" />
 <CountDirection value="1"/>
 <staticLogFileName value="true" />

18

আমি ব্যবহার করে শেষ করেছি ('.log' ফাইলের নাম এবং 'মাইফিলনাম_' এর চারপাশে একক উদ্ধৃতিগুলি নোট করুন):

  <rollingStyle value="Date" />
  <datePattern value="'myfilename_'yyyy-MM-dd"/>
  <preserveLogFileNameExtension value="true" />
  <staticLogFileName value="false" />
  <file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />

এটি আমাকে দেয়:

myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.

preserveLogFileNameExtensionলগ 4 নেট (যেমন v1.2.10) এর পূর্ববর্তী সংস্করণগুলির জন্য এটি এখানে
দিমিত্রি কার্পেঙ্কো

13

আমি সমস্ত উত্তর চেষ্টা করে দেখেছি, তবে আমার কাছে প্রত্যাশার মতো কিছু না কিছু ছিল এবং সর্বদা অনুপস্থিত ছিল।

তারপরে আমি প্রতিটি উত্তরে প্রদত্ত ইঙ্গিতগুলির সাথে কিছুটা পরীক্ষা-নিরীক্ষা করেছি এবং নিম্নলিখিত সেটিংসে সফল হয়েছিল:

<appender name="RollingActivityLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="C:\temp\LOG4NET_Sample_Activity.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <preserveLogFileNameExtension value="true" />
  <datePattern value="-yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level - %message%newline" />
  </layout>
</appender>

প্যারামিটারগুলির অন্যান্য সংমিশ্রণের সমস্যাটি ছিল সর্বশেষতম ফাইলটির সময় প্যাটার্ন ছিল না, বা সময় প্যাটার্নটি যুক্ত করা হয়েছিল .log20171215যা প্রতিদিন একটি নতুন ফাইল সময় তৈরি করে (এবং একটি নতুন ফাইল টাইপ! ) - বা উভয়ই সমস্যা উপস্থিত হয়েছিল।

এখন এই সেটিংটি দিয়ে আপনি এই জাতীয় ফাইলগুলি পেয়ে যাচ্ছেন:

LOG4NET_Sample_Activity-20171215.log

যা আমি চেয়েছিলাম


সংক্ষেপ:

  • তারিখের প্যাটার্নটি <file value=...অ্যাট্রিবিউটে রাখবেন না, কেবল এটিতে সংজ্ঞা দিন datePattern

  • আপনার preserveLogFileNameExtension মান মানটি সেট করা আছে তা নিশ্চিত করুন true

  • আপনার staticLogFileName মানটি সেট করা আছে তা নিশ্চিত করুন false

  • সেট rollingStyleঅ্যাট্রিবিউট মান থেকে Date


আপনি রোলিংস্টাইলকে কমপোজিটে সেট করতে পারেন যা তারিখ এবং আকার উভয়কেই রোল করে।
সাইমন তেউসি

1
দুর্দান্ত কাজ করে। সংক্ষেপে আমি আরও যোগ করতে চাই: নিশ্চিত করুন যে আপনার কাছে স্ট্যাটিকলগফাইনেম মানটি মিথ্যাতে সেট করা আছে
র্যান্ডাল ফ্ল্যাগ

5

ফাইল এক্সটেনশন সংরক্ষণ করতে:

<log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\\LogFolder\\%date{yyyyMM}\\SchT.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maximumFileSize value="30MB" />
      <staticLogFileName value="true" />
      <preserveLogFileNameExtension value="true"/>
      <datePattern value="ddMMyyyy" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
  </log4net>

কেন আছে %date{yyyyMM}এবং value="ddMMyyyy" ? কার্যকর তারিখের ধরণটি কোনটি?
অ্যালান রুইন

আমার মনে হয় ডেটপ্যাটার্নটি ফাইলের নামের জন্য তবে% তারিখ {yyyyMM the মূল পিতৃ ডিরেক্টরিটির জন্য (আমি এটি সেভাবে চেয়েছিলাম)
ফুরাট

ডেটপ্যাটার্ন বৈশিষ্ট্যটি তারিখ রোলিংস্টাইলের জন্য রোলিং সময় নির্ধারণ করে। দেখুন logging.apache.org/log4net/release/config-examples.html RollingFileAppender অধীনে। "উদাহরণস্বরূপ," yyyyMMdd "এর একটি তারিখের প্যাটার্নটি প্রতিদিন গড়াবে available উপলভ্য নিদর্শনগুলির তালিকার জন্য সিস্টেম.গ্লোবালাইজেশন .সেইটাটাইম ফর্ম্যাট ইনফো দেখুন" "
রায়ান বুডিকোম

@ আরবুদ্দিকোম হ্যাঁ, তবে ফাইলের এক্সটেনশন কীভাবে সংরক্ষণ করবেন তা নিয়ে প্রশ্ন।
ফুরাত

আমি জানি, অ্যালান 'মান = "ডিডিএমইআইআইআই" এর উদ্দেশ্য নিয়ে প্রশ্ন করেছিল। আপনার মন্তব্য "আমি মনে করি ডেটপ্যাটার্নটি ফাইলের নামের জন্য" এই ক্ষেত্রে ভুল।
রায়ান বুডিকোম

0

এর সাথে পূর্ববর্তী প্রতিক্রিয়ায় বর্ধিত কনফিগারেশন বিভাগ

 ...
 ...
 <rollingStyle value="Composite" />
 ...
 ...

তালিকাভুক্ত কাজ কিন্তু আমি ব্যবহার করতে হবে না

<staticLogFileName value="false" /> 

। আমি মনে করি রোলিং অ্যাপেন্ডার অবশ্যই অবশ্যই (যুক্তিযুক্তভাবে) সেটিংটিকে অগ্রাহ্য করবে যেহেতু সংজ্ঞা অনুসারে ফাইলটি পুনরায় পুনরায় নির্মাণ করা হয় যখন অ্যাপ্লিকেশনটি পুনরায় চালু / পুনরায় ব্যবহার করা হয়। অ্যাপ্লিকেশন শুরু হওয়ার সাথে সাথে তাত্ক্ষণিক রোলওভারটির পক্ষে এটি গুরুত্বপূর্ণ।


আমার জন্য, এটি <স্ট্যাটিকলগফিলনাম মান = "মিথ্যা" /> ছাড়া কাজ করবে না
নুরেটিন

আমার পাশাপাশি, স্ট্যাটিকলগফিলনামকে মিথ্যাতে সেট করতে হয়েছিল অন্যথায় এটি লগইন করে না
ওনিয়ালো

0

সিস্টেম ভেরিয়েবল ব্যবহার করে সিআই থেকে সহজ পরিবর্তন সক্ষম করতে আমি কনফিগারেশনকে কোডে সরিয়ে নিয়েছি। আমি ফাইলের নামের জন্য এই কোডটি ব্যবহার করেছি এবং ফলাফল হ'ল 'Log_03-23-2020.log'

            log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(Assembly.GetEntryAssembly());
            Hierarchy hierarchy = (Hierarchy)repository;
            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = "%date %level - %message%newline%exception";
            patternLayout.ActivateOptions();

            RollingFileAppender roller = new RollingFileAppender();
            roller.AppendToFile = true;
            roller.File = "Log_";
            roller.DatePattern = "MM-dd-yyyy'.log'";
            roller.Layout = patternLayout;
            roller.MaxFileSize = 1024*1024*10;
            roller.MaxSizeRollBackups = 10;
            roller.StaticLogFileName = false;
            roller.RollingStyle = RollingFileAppender.RollingMode.Composite;
            roller.ActivateOptions();
            hierarchy.Root.AddAppender(roller);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.