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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-09 13:30:00  来源:igfitidea点击:

Having a log per day

c#loggingerror-handlinglog4net

提问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

就像使用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

PreserveLogFileName

保留日志文件名

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>