문제

현재 파일이 항상 명명되도록 복합 RollingFileAppender를 사용하도록 log4net을 구성합니다. logfile.log 그리고 모든 후속 파일의 이름이 지정됩니다 logfile-yyyy.mm.dd.seq.log 어디 서열 로그가 하루 만에 특정 크기를 초과하는 경우 시퀀스 번호입니다. 불행히도, 나는 그러한 설정을 구성하는 데 거의 성공하지 못했습니다.

편집하다:

내 현재 구성은 아래에 붙여져 있습니다. 그것은 몇 가지 답변을 기반으로 업데이트되어 필요에 따라 충분히 가까워졌습니다. 형식의 파일을 생성합니다. logfile_yyyy.mm.dd.log.seq

<log4net>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingFileAppender" />
    </root>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="logs\\logfile"/>
        <staticLogFileName value="false"/>
        <appendToFile value="true"/>
        <rollingStyle value="Composite"/>
        <datePattern value="_yyyy.MM.dd&quot;.log&quot;"/>
        <maxSizeRollBackups value="10"/>
        <maximumFileSize value="75KB"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    </appender>

</log4net>

흥미로운 메모, 설정

<staticLogFileName value="false"/>

True에게 로거가 파일을 작성하지 않게합니다.

도움이 되었습니까?

해결책

우리는 다음을 사용합니다 (log4J) :

<appender name="roller" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="Applog.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[slf5s.start]%d{DATE}[slf5s.DATE]%n%p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n%c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n"/>
    </layout>
</appender>

이것은 우리에게 준다 applog.log.yyyy-mm-dd 파일

다른 팁

log4net RollingFileAppender 소스 코드에 따르면 :

protected string GetNextOutputFileName(string fileName)
{
    if (!m_staticLogFileName) 
    {
        fileName = fileName.Trim();

        if (m_rollDate)
        {
            fileName = fileName + m_now.ToString(m_datePattern, System.Globalization.DateTimeFormatInfo.InvariantInfo);
        }

        if (m_countDirection >= 0) 
        {
            fileName = fileName + '.' + m_curSizeRollBackups;
        }
    }

    return fileName;
}

따라서 필요한 이름으로 로그 파일을 생성 할 수 없다고 생각합니다. 나는 그것이 같은 것 같아요 logfileYYYY-MM-dd.n.log 또는 유사합니다.

이 속성을 true로 설정하십시오.

preservelogfilenameextension value = "true"

이 트릭이 도움이 될 것이라고 믿습니다! 그러나 preservelogfilenameextension 속성은 최신 버전의 log4net이 필요합니다. 여기에서 찾을 수 있습니다. logging.apache.org/log4net/download.html

이 경우에 유의하십시오

            <maxSizeRollBackups value="10"/>

무시됩니다.

이것 좀 봐 대답 비슷한 log4net 질문에

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top