Yanıtlar:
Log4net yapılandırma dosyanızda RollingFileAppender ile aşağıdaki parametreyi kullanın:
<param name="DatePattern" value="dd.MM.yyyy'.log'" />
<preserveLogFileNameExtension value="true" />
doğru sözdizimi ve bu harika bir cevap. Kayıp nasıl gerçekleşti, sorabilir miyim?
<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>
RollingLogFileAppender için şu öğelere ve değerlere de ihtiyacınız vardır:
<rollingStyle value="Date" />
<staticLogFileName value="false" />
Log4Net 1.2.13'ü kullanarak dosya adında tarih saatine izin vermek için aşağıdaki yapılandırma ayarlarını kullanırız.
<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />
Aşağıdaki kuralda dosyalar sağlayacak: logname-2015-04-17.txt
Bununla birlikte, günde 1 günlük tuttuğunuzdan emin olmak için genellikle aşağıdakilere sahip olmak en iyisidir.
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
Dosya boyutu önemliyse, aşağıdakiler yeni bir gün doğana kadar 5MB boyutunda 500 dosyaya izin verir. CountDirection , artık geçerli olmayan dosyaların Artan veya Azalan numaralandırılmasına izin verir.
<maxSizeRollBackups value="500" />
<maximumFileSize value="5MB" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<CountDirection value="1"/>
<staticLogFileName value="true" />
Kullanmaya son verdim ('.log' dosya adını ve 'myfilename_' etrafındaki tek tırnak işaretlerini not edin):
<rollingStyle value="Date" />
<datePattern value="'myfilename_'yyyy-MM-dd"/>
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="false" />
<file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />
Bu bana şunu verir:
myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.
preserveLogFileNameExtension
burada
Tüm cevapları denedim, ancak her zaman eksik olan ve benden beklendiği gibi çalışmayan bir şeyler vardı.
Sonra her yanıtta verilen ipuçlarını biraz denedim ve aşağıdaki ayarlarda başarılı oldum:
<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>
Diğer parametre kombinasyonlarıyla ilgili sorun, en son dosyanın zaman modeline sahip olmaması veya her gün .log20171215
yeni bir dosya saati (ve yeni bir dosya türü! ) Oluşturan zaman kalıbının eklenmesi veya her iki sorunun ortaya çıkmasıydı.
Şimdi bu ayarla şuna benzer dosyalar alıyorsunuz:
LOG4NET_Sample_Activity-20171215.log
istediğim de buydu.
Özetlemek:
Tarih desenini <file value=...
özniteliğe koymayın , sadece datePattern
.
preserveLogFileNameExtension
Değer özniteliğinin olarak ayarlandığından emin olun true
.
staticLogFileName
Değerin olarak ayarlandığından emin olun false
.
rollingStyle
Öznitelik değerini olarak ayarlayın Date
.
Dosya uzantısını korumak için:
<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}
ve value="ddMMyyyy"
? geçerlilik tarihi modeli hangisidir?
Önceki yanıtta bulunan genişletilmiş yapılandırma bölümü
...
...
<rollingStyle value="Composite" />
...
...
listelenmiş işler ama kullanmak zorunda değildim
<staticLogFileName value="false" />
. RollingAppender'ın bu ayarı (mantıksal olarak) yok sayması gerektiğini düşünüyorum, çünkü tanım gereği dosya her gün uygulama yeniden başlatıldığında / yeniden kullanıldığında yeniden oluşturulur. Belki de, uygulama HER başladığında anında devreden çıkma için önemli olabilir.
Sistem değişkenini kullanarak CI'dan kolay değişiklik yapılmasını sağlamak için yapılandırmayı koda taşıdım. Bu kodu dosya adı için kullandım ve sonuç '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);