Aam*_*mir 0 c# log4net log4net-appender
我已经log4net在Windows服务中实现了它,并且按预期工作,并根据配置设置使用当前日期创建了新文件。
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logs\log-%utcdate{yyyy-MM-dd}.txt" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<param name="DatePattern" value="dd.MM.yyyy'.log'" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="file" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
这里的问题是,如果我的服务从最近2天开始运行,那么它将不会使用当前日期创建新文件,它会保留2天旧文件的引用并将日志添加到旧文件中,而不是在那一天创建新文件。
记录器代码就像
public static class Logger
{
public static log4net.ILog Log { get; set; }
static Logger()
{
Log = log4net.LogManager.GetLogger(typeof(System.Reflection.MethodBase));
}
public static void Trace(string message)
{
Log.Info(message);
}
public static void LogException(Exception ex)
{
StringBuilder builer = new StringBuilder();
builer.AppendLine("=============Exception===========");
builer.AppendLine("Exception: {0}");
builer.AppendLine("StackTrack: {1}");
Log.ErrorFormat(builer.ToString(), ex.Message, ex.StackTrace);
}
}
Run Code Online (Sandbox Code Playgroud)
要将信息记录到日志文件中,我正在使用代码
Logger.Trace("Hello");
Run Code Online (Sandbox Code Playgroud)
我需要什么代码级更改才能创建新的日志文件,即使服务/桌面应用程序从最近几天开始连续运行,每天也是如此?
您的配置同时具有<staticLogFileName value="false" />和<staticLogFileName value="true" />,这可以解释为什么无法正确滚动。
建议您删除<staticLogFileName value="true" />和更改文件和DatePattern,如下所示:
<file value="Logs\log-" />
...
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
Run Code Online (Sandbox Code Playgroud)
如果staticLogFileName为false,则日期字符串将附加到基本文件名中,以给出例如:
Logs\log-2018-01-30.log
Run Code Online (Sandbox Code Playgroud)
但是,我要指出的是,log4net 仅在您实际记录一条消息时才检查是否需要滚动日志文件,因此,如果您不经常记录日志,则它可能不会在第二天开始时滚动。
| 归档时间: |
|
| 查看次数: |
716 次 |
| 最近记录: |