program tip

파일 이름에 날짜가 포함 된 Log4net 롤링 매일 파일 이름

radiobox 2020. 7. 24. 20:22
반응형

파일 이름에 날짜가 포함 된 Log4net 롤링 매일 파일 이름


예를 들어 이름이 지정된 파일을 갖고 싶습니다.

dd.mm.yyyy.log

log4net으로 어떻게 가능합니까?


Log4net 구성 파일에서 RollingFileAppender와 함께 다음 매개 변수를 사용하십시오.

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

<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
.
.

나는 모든 대답을 시도했지만 항상 누락되고 예상대로 작동하지 않는 것이있었습니다.

그런 다음 각 답변에 주어진 힌트로 약간의 실험을 수행했으며 다음 설정으로 성공했습니다.

<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.

  • Make sure you have the preserveLogFileNameExtension value attribute set to true.

  • Make sure you have the staticLogFileName value set to false.

  • Set the rollingStyle attribute value to Date.


To preserve file extension:

<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>

The extended configuration section in a previous response with

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

listed works but I did not have to use

<staticLogFileName value="false" /> 

. I think the RollingAppender must (logically) ignore that setting since by definition the file gets rebuilt each day when the application restarts/reused. Perhaps it does matter for immediate rollover EVERY time the application starts.

참고URL : https://stackoverflow.com/questions/1165084/log4net-rolling-daily-filename-with-date-in-the-file-name

반응형