Datetime 使用Log4Net设置日期时间格式
我想在使用Log4Net编写的日志文件中显示时间戳(HH:mm:ss)。我希望此值位于中心时间,但不希望出现偏移。理想情况下,我希望它读成Datetime 使用Log4Net设置日期时间格式,datetime,log4net,datetime-format,log4net-configuration,Datetime,Log4net,Datetime Format,Log4net Configuration,我想在使用Log4Net编写的日志文件中显示时间戳(HH:mm:ss)。我希望此值位于中心时间,但不希望出现偏移。理想情况下,我希望它读成CT。现在,我的配置是这样设置的:%date{HH:mm:sszzz},它产生了这个-05:00。生成此时间戳格式的正确格式说明符是什么?正如stuartd所说,您无法使用时区对DateTime进行本机格式化。但是,您可以创建一个自定义的PatternLayoutConverter,它将使用Convert方法中需要的任何渲染。以下是DatePatternCon
CT
。现在,我的配置是这样设置的:%date{HH:mm:sszzz}
,它产生了这个-05:00
。生成此时间戳格式的正确格式说明符是什么?正如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>
.Net日期时间格式字符串不支持时区名称。@Dan,您是否成功处理日志中的日期格式设置?我还没有机会尝试此操作。我很抱歉…我知道我需要接受你的回答或评论,并说明为什么这是不可接受的-我只是没有时间。不过,我没有忘记,我感谢你花时间回答我的问题。我保证尽快跟进结果!仍然没有抓住机会来测试这个问题,但是为了完整性接受了这个答案。