【问题标题】:Log4Net put log files in year and month foldersLog4Net 将日志文件放在年月文件夹中
【发布时间】:2019-05-12 21:18:50
【问题描述】:

我已经尝试了我在 StackOverflow 上找到的几个建议,最后得到了以下似乎可以完成工作的建议:

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString" value="%appSetting{LogsFolder}\%date{yyyy}\%date{MM}\MyLogs.log" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <datePattern value="ddMMyyyy" />
        <preserveLogFileNameExtension value="true" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger (%property{culture}) %identity - %message%newline" />
        </layout>
    </appender>

但是,经过几个月的日志记录,我发现配置不正确,但我看不出是什么导致了问题。

我得到了一个文件夹结构,其中第一个是 year,第二个是 month,但我仍然没有 12 的文件夹(12 月) )。我拥有的最新文件夹是 11,除了 12 月的日志之外,这个文件夹还包含 11 月 6 日至 30 日的所有日志。

文件名是 MyLogs12112018.log 等,其中模式是日/月/年。

我真的很想在 MyLogs 和日期之间添加一个 (.),但这是次要的。

但是,为什么日志文件放在不正确的文件夹中?

【问题讨论】:

    标签: c# logging log4net log4net-configuration log4net-appender


    【解决方案1】:

    试试这第二行:

    <file type="log4net.Util.PatternString" value="%appSetting{LogsFolder}\%date{yyyy}\%date{MM}\%date{dd}\MyLogs.log" />''
    

    【讨论】:

    • 谢谢,但我现在不想要一个文件夹 - 我想要一个 month 文件夹中的所有文件。
    【解决方案2】:

    以下内容如何:

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file type="log4net.Util.PatternString" value="%appSetting{LogsFolder}" />
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <datePattern value="yyyy\\MM\\'MyLogs.'ddMMyyyy'.log'" />
          <preserveLogFileNameExtension value="true" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger (%property{culture}) %identity - %message%newline" />
          </layout>
        </appender>
    

    【讨论】:

    • 它似乎在工作。我在本地的 datePattern 中没有文件夹结构,但我已将我的 staticLogFileName 属性更新为false 这似乎可以解决问题。我想检查一下在 2 月移动时它的行为如何,所以如果过渡有效,我会接受你的回答。
    • 前三天已放在01文件夹中。我的文件类型模式是:%appSetting{LogsFolder}\%date{yyyy}\%date{MM}\MyLogs..log,staticLogFileName 为 false,datePattern 为“yyyy-MM-dd”。只要 datePattern 产生唯一的组,在 file-value 和 datePattern 中使用文件名应该没有任何区别?
    • 尝试在文件值中使用“\\”而不是“\”。这对我有用。
    • 好像处理月份转换没有任何问题,谢谢。
    猜你喜欢
    • 2023-03-31
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多