【问题标题】:Is it possible to add an hour to the timestamp in log4net using the ConversionPattern是否可以使用 ConversionPattern 为 log4net 中的时间戳添加一个小时
【发布时间】:2018-06-14 09:37:20
【问题描述】:

我们的服务器位于德国,而我们位于英国。我们希望 log4net 日志显示为 GMT 的时间戳,但我不知道如何或是否可以在写入日志文件的时间上增加一个小时。

这是我们当前的配置:

<log4net>
<root>
  <level value="DEBUG" />
  <appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <file value="logs\\" />
  <datePattern value="dd.MM.yyyy'.log'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="50" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-dd-MM HH:mm:ss.fff} %-5level - %message%newline" />
  </layout>
</appender>

我在网上找到了一些对“hourOffset”的引用,但这似乎不起作用,并且从未出现在 log4net 文档中。

欢迎在这里提出任何建议。

【问题讨论】:

    标签: asp.net-mvc log4net log4net-configuration


    【解决方案1】:

    使用utcdate 代替d(或date)。另请参阅documentation

    <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%utcdate{yyyy-dd-MM HH:mm:ss.fff} %-5level - %message%newline" />
    </layout>
    

    【讨论】:

    • 谢谢。我确实尝试过 utcdate,但问题是它会在半年的时间里延迟 1 小时,具体取决于夏令时。
    • @JacksonW6 - 您要求添加 GMT 日期和时间作为时间戳的值。 GMT = UTCGMT/UTC does not observe daylight savings time.
    • 我的错误,对不起。我的意思是英国当地时间,应该总是比服务器时间早 1 小时。
    • @JacksonW6 - log4net 中没有内置任何东西可以将时间戳转换为不同的语言环境。你为什么要在日志文件中这样做呢?就我个人而言,我也更喜欢 UTC 值,因为它是明确的。
    • 原因是访问日志文件的唯一人员是我们英国办事处的开发团队,通常是为了响应在特定时间记录的支持问题。例如,我们在上午 10 点 30 分收到的一封电子邮件说某些事情不起作用。我们检查相应时间的日志文件,看看当时是否出现任何异常。有一个小时的差异,我们每次都需要增加一个小时 - 如果有人对日志文件不太熟悉,很容易错过。
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多