답변:
Log4net 구성 파일에서 RollingFileAppender와 함께 다음 매개 변수를 사용합니다.
<param name="DatePattern" value="dd.MM.yyyy'.log'" />
<preserveLogFileNameExtension value="true" />
은 올바른 구문이며 이것은 훌륭한 대답입니다. 어떻게 손실이 발생했는지 물어봐도 될까요?
<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의 경우 다음 요소와 값도 필요합니다.
<rollingStyle value="Date" />
<staticLogFileName value="false" />
Log4Net 1.2.13을 사용하면 다음 구성 설정을 사용하여 파일 이름에 날짜 시간을 허용합니다.
<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 개 파일을 허용합니다. CountDirection 은 더 이상 최신이 아닌 파일의 오름차순 또는 내림차순 번호 매기기를 허용합니다.
<maxSizeRollBackups value="500" />
<maximumFileSize value="5MB" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<CountDirection value="1"/>
<staticLogFileName value="true" />
나는 ( '.log'파일 이름과 'myfilename_'주위의 작은 따옴표에주의하십시오) :
<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
여기에
나는 모든 대답을 시도했지만 항상 무언가가 누락되어 예상대로 작동하지 않았습니다.
그런 다음 각 답변에 제공된 힌트를 약간 실험했으며 다음 설정으로 성공했습니다.
<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
.
파일 확장자를 유지하려면 :
<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"
? 유효 날짜 패턴은 무엇입니까?
이전 응답의 확장 구성 섹션
...
...
<rollingStyle value="Composite" />
...
...
작품을 나열했지만 사용할 필요가 없었습니다.
<staticLogFileName value="false" />
. RollingAppender는 정의에 따라 응용 프로그램이 다시 시작 / 재사용 될 때 파일이 매일 다시 작성되기 때문에 (논리적으로) 해당 설정을 무시해야한다고 생각합니다. 응용 프로그램이 시작될 때마다 즉각적인 롤오버가 중요 할 수 있습니다.
시스템 변수를 사용하여 CI에서 쉽게 수정할 수 있도록 구성을 코드로 이동했습니다. 이 코드를 파일 이름으로 사용했으며 결과는 '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);