您能否将日志附加程序配置为仅在一天中的特定时间(例如每天 08:00 到 19:00 之间)输出?在这些时间之外的记录事件将被忽略,并且不会由附加程序记录。
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value=".output.log"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
如上所述,我如何将其配置为仅在白天的 08:00 到 19:00 之间记录?
最佳答案
@Matt 提到的过滤器是一种更通用的方法。
但如果您确定只想登录文件,则可以创建派生自 RollingFileAppender
的自定义附加程序。
就像这样:
namespace YourNameSpace
{
public class TimeBoundedRollingFileAppender : RollingFileAppender
{
public int LogFrom { get; set; }
public int LogTo { get; set; }
protected override bool FilterEvent(LoggingEvent loggingEvent)
{
var currentHour = DateTime.Now.Hour;
if (currentHour <= LogFrom || currentHour >= LogTo)
{
return false;
}
return base.FilterEvent(loggingEvent);
}
}
}
然后在配置中:
<log4net>
<appender name="TimeBoundedAppender" type="YourNameSpace.TimeBoundedRollingFileAppender, YourNameSpace">
<file value=".output.log"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<LogFrom>8</LogFrom>
<LogTo>19</LogTo>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="TimeBoundedAppender"/>
</root>
</log4net>
关于c# - log4net - 仅在一天中的某些时间之间安排日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44076005/