I am configure log4net to use a composite RollingFileAppender so that the current file is always named logfile.log and all subsequent files are named logfile-YYYY.MM.dd.seq.log where seq is the sequence number if a log exceeds a certain size within a single day. Unfortunately, I have had very little success in configuring such a setup.
Edit:
My current configuration is pasted below. It has been updated based on several answers which gets me close enough for my needs. This generates files of the format: 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".log""/>
<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>
One interesting note, setting
<staticLogFileName value="false"/>
to true causes the logger to not write any files.
-
According to log4net RollingFileAppender source code:
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; }
So I'm guessing it's not possible to generate a log file with the name you need. I think it's something like
logfileYYYY-MM-dd.n.log
or similar.From Leandro López -
We use the following (in 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>
This gives us Applog.log.yyyy-MM-dd files
From paul -
Note that is this case the
<maxSizeRollBackups value="10"/>
will be ignored.
See this answer to a similar log4net question
From rathkopf
0 comments:
Post a Comment