[C#] 파일 이름에 날짜가있는 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.

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