【问题标题】:Dates in rolled-over log file ONLY仅限翻转日志文件中的日期
【发布时间】:2016-02-02 01:41:43
【问题描述】:

我想在 log4net 中设置一个 RollingFileAppender,这样当前(即今天的)日志文件总是有一个静态名称(如 app.log),但在一天结束时翻转,它应该是重命名为 app..log。这是迄今为止我所获得的最接近的结果(请注意,我使用的是每分钟翻转而不是每天翻转,因为这更容易调试):

<appender name="applog" type="log4net.Appender.RollingFileAppender">
  <file value="app.log" />
  <staticLogFileName value="false" />
  <datePattern value=".yyyy-MM-dd-hh-mm" />
  <preserveLogFileNameExtension value="true" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <maxSizeRollBackups value="5" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

问题是我在请求开始时看到以下内容:

  • app.2016-02-01-05-00.log

到请求结束时,我有这些文件:

  • app.2016-02-01-05-00.log
  • app.2016-02-01-05-00.log.2016-02-01-05-00.log

请注意,分钟还没有翻转,但它似乎已经创建了某种翻转文件。此外,今天的文件从未像我想要的那样仅称为“app.log”,它总是以名称中的时间戳开头。最后,它似乎不符合我的maxSizeRollBackups 5,据我所知,备份会无限增长而不会被删除。

我尝试删除 staticLogFileName 标记,这使今天的名称“app.log”符合我的要求,但随后它会在原地滚动,覆盖自身而不创建备份文件。

【问题讨论】:

    标签: asp.net-mvc asp.net-web-api log4net log4net-configuration log4net-appender


    【解决方案1】:

    分解并下载源代码后,原来是rollover的System.IO.File.Move()调用的权限问题。我还需要将文件夹的修改权限设置为 true,而不仅仅是读写(这很奇怪,因为从技术上讲,移动不是写操作吗?)。

    我还发现您不应该将 staticLogFileName 设置为 false,因此我必须从 xml 中删除该元素。

    【讨论】:

    • 我面临同样的问题,即文件名在更新时附加当前日期时间,如下所示 abc-29-11-2017-04-0429-11-2017-04-04怎么解决。?请让我知道是否有任何解决方案?
    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多