我配置log4net以使用复合RollingFileAppender,以便当前文件始终命名为 logfile.log ,所有后续文件都命名为 logfile -YYYY.MM.dd.seq.log 其中 seq 是日志在一天内超过特定大小的序列号。不幸的是,我在配置这样的设置方面收效甚微。
修改
我的当前配置粘贴在下面。它已根据几个答案进行了更新,使我足够接近我的需求。这将生成以下格式的文件: 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>
一个有趣的说明,设置
<staticLogFileName value="false"/>
为true会导致记录器不写任何文件。
答案 0 :(得分:15)
我们使用以下(在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 文件
答案 1 :(得分:4)
根据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
或类似的东西。
答案 2 :(得分:1)
尝试将此属性设置为true:
preserveLogFileNameExtension value =“true”
我相信这个技巧会对你有所帮助!但是,preserveLogFileNameExtension属性需要最新版本的log4net,您可以在此处找到它:logging.apache.org/log4net/download.html
答案 3 :(得分:0)