代码之家  ›  专栏  ›  技术社区  ›  Dan Forbes

使用Log4Net设置日期时间格式

  •  4
  • Dan Forbes  · 技术社区  · 10 年前

    我想在使用Log4Net编写的日志文件中显示时间戳(HH:mm:ss)。我希望该值在“中央时间”中,但不希望显示偏移量。理想情况下,我想读一下 <HH:mm:ss> CT 。现在,我的配置设置如下: %date{HH:mm:sszzz} ,正在生成此 <HH:mm:ss>-05:00 。生成此时间戳格式的正确格式说明符是什么?

    1 回复  |  直到 10 年前
        1
  •  4
  •   samy    10 年前

    正如stuartd所说,您不能将DateTime与时区本地格式化。然而,您可以做的是创建自定义 PatternLayoutConverter 将使用 Convert 方法此处是 DatePatternConverter :

    // log4net.Layout.Pattern.DatePatternConverter
    protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
    {
        try
        {
            this.m_dateFormatter.FormatDate(loggingEvent.TimeStamp, writer);
        }
        catch (Exception exception)
        {
            LogLog.Error("DatePatternConverter: Error occurred while converting date.", exception);
        }
    }
    

    这个 m_dateFormatter 字段由选项初始化,您可以通过实现 IOptionHandler 界面

    拥有转换器后,通过在布局标记中声明它,将其添加到布局中

    <layout ...>
        <converter>
            <name value="myDateWithTimeZone" />
            <type value="MyApp.LogConverters.MyConverter" />
        </converter>
        <!-- rest of the layout -->
    </layout>