C# 每天有一个日志
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10349536/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Having a log per day
提问by swade1987
Currently my application is using log4net to log errors, the web.config for this is as followed:
目前我的应用程序正在使用 log4net 来记录错误,为此的 web.config 如下:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="c:/paypal/logs/gateway.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
However, the problem with this is that everyday the logs always go to gateway.log
然而,问题在于每天日志总是去 gateway.log
Does anybody know a way to have a different log file per day using log4net?
有人知道每天使用 log4net 拥有不同日志文件的方法吗?
Ideally I don't want to have to manually edit the web.configevery night using a scheduled task.
理想情况下,我不想web.config每天晚上使用计划任务手动编辑。
回答by jjchiw
Like using the RollingFileAppender
<appender name="RollingLogFileAppenderOutput" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:\my.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
edit
编辑
This is the whole log4net configuration section to roll everyday, the same as @lazyberezovsky answered just adding the log4net and root for clarification
这是每天滚动的整个 log4net 配置部分,与@lazyberezovsky 回答相同,只是添加了 log4net 和 root 以进行澄清
edit2<file value="c:/paypal/logs/gateway_" />this will create a file named 'gateway_' and at the end of the day (2012-04-27) it will be renamed as gateway_20120427.log and the next day (2012-04-28) it will create again the file gateway_ and at the end it'll create gateway_20120428.log.
edit2<file value="c:/paypal/logs/gateway_" />这将创建一个名为“gateway_”的文件,并在一天结束时 (2012-04-27) 将其重命名为 gateway_20120427.log,第二天 (2012-04-28) 它将再次创建文件 gateway_最后它会创建 gateway_20120428.log。
<log4net>
<appender name="RollingLogFileAppenderOutput" type="log4net.Appender.RollingFileAppender">
<file value="c:/paypal/logs/gateway_" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppenderOutput" />
</root>
</log4net>
回答by Sergey Berezovskiy
You should use RollingFileAppenderwith rollingStyle Dateand datePattern yyyyMMdd(this will roll every day).
您应该将RollingFileAppender与 rollingStyleDate和 datePattern 一起使用yyyyMMdd(这将每天滚动)。
Example of configuration:
配置示例:
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:/paypal/logs/gateway.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
UPDATE: I think a better way is to include the date into file name. And use datePattern value only to show when new log file should be created.
更新:我认为更好的方法是将日期包含在文件名中。并且仅使用 datePattern 值来显示应创建新日志文件的时间。
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:/paypal/logs/gateway_%date{yyyyMMdd}.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
In this case all your files will have name like gateway_20120427.log.
在这种情况下,您的所有文件都将具有类似gateway_20120427.log.
回答by Barry Colebank Jr
This setting keeps the extension of the file the same after you roll the log.
滚动日志后,此设置使文件的扩展名保持不变。
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:/paypal/logs/gateway.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="_yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
<preserveLogFileNameExtension value="true" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>

