如何在页眉/页脚中使用日期模式?
这是我的 app.config 中的附加程序配置。这只是打印出文字字符串,而不是将其转换为日期(即,它按字面打印“[START: %date{MM/dd/yy HH:mm} ]”)。
<appender name="RollingLogFileAppender"
type="log4net.Appender.RollingFileAppender">
<file value="C:\somelog" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="-yyyy-MM-dd'.txt'" />
<layout type="log4net.Layout.PatternLayout">
<header value="[START: %date{MM/dd/yy HH:mm} ] " />
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
<footer value="[END] " />
</layout>
</appender>
如何让它在标题中打印日期/时间?
Here's my appender configuration from my app.config. This just prints out the literal string instead of translating it to the date (i.e., it literally prints "[START: %date{MM/dd/yy HH:mm} ]").
<appender name="RollingLogFileAppender"
type="log4net.Appender.RollingFileAppender">
<file value="C:\somelog" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="-yyyy-MM-dd'.txt'" />
<layout type="log4net.Layout.PatternLayout">
<header value="[START: %date{MM/dd/yy HH:mm} ]
" />
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
<footer value="[END]
" />
</layout>
</appender>
How can I get this to print the date/time in the header?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
实现此目的的一个简单方法是子类化
log4net.Layout.PatternLayout
并覆盖页眉和页脚。然后,您可以在标题中添加您想要的任何内容:日期戳、机器名称、用户名、程序集版本或您想要的任何内容::
在程序集中包含这个新类,并在文件中使用新类型,如下所示 您覆盖了页眉和页脚,甚至不需要在此处添加它。每次应用程序启动以及每次文件滚动时都会添加标头。
An easy way to do this is to subclass
log4net.Layout.PatternLayout
and override Header and Footer. Then you can add whatever you want to your Header: date stamp, machine name, user name, assembly version, or whatever your heart desires:Include this new class in your assembly, and use the new type in your file, like this:
Since you overrode Header and Footer, you don't even need to add it here. The Header will be added every time your application starts, and every time the file rolls over.
基于 @Wizou 评论。请参阅 DynamicPatternLayout 类 文档。
我实际上是利用这种行为差异来确定开始和结束时间
将 Header 上的类型设置为 PatternString 但将 Footer 保留为动态
<布局类型=“log4net.Layout.DynamicPatternLayout”>/>
Building on @Wizou's comment. See the DynamicPatternLayout Class documentation.
I'm actually using this difference in behaviour to have a start and end time
Setting the type on Header to PatternString but leaving Footer as dynamic
<layout type="log4net.Layout.DynamicPatternLayout">
<param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline" type="log4net.Util.PatternString" />
<param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline" />
</layout>
我遇到了这个问题,我使用的快速解决方法是仅使用固定的页眉和页脚。然后在获得 ILog 对象后立即执行此操作:
log.Info(string.Format("[START: {0} ]\r\n", dateString))
因此,就在标题下将获得您想要的信息。
例如
I encountered this problem and a quick workaround I used is to just use a fixed header and footer. Then do this as soon as you have the ILog object:
log.Info(string.Format("[START: {0} ]\r\n", dateString))
So just under the header you will get the information you desire.
E.g
来自此处的答案。
对我来说就像魅力一样。无需编写一段代码。
另外在我们通常使用的项目中:
看看PatternString 也有文档。
我还注意到,在您编写第一个日志语句之前,日志文件不会出现。
Answer from here.
Works for me like a charm. No need to write a piece of code.
Also in projects we usually use:
Take a look at PatternString doc also.
Also I've noticed that log file won't appear until you write first log statement.