我使用Log4Net CSV appender记录基于Azure的Web应用程序:
我看到多个条目具有相同的时间戳 - 显然没有记录服务器上给定事件的实际时刻:
2018-03-19 21:59:52.000 OrderId: 191096 Starts to validate, multi:
2018-03-19 21:59:52.000 OrderId: 191096 validation request:
2018-03-19 21:59:52.000 OrderId: 191096 passed validation. AuthKey:6128994
2018-03-19 21:59:52.000 OrderId: 191096 Single starts
2018-03-19 21:59:52.000 OrderId: 191096 submits:
2018-03-19 21:59:52.000 SaveOrderChanges: 191096
2018-03-19 21:59:52.000 SaveOrderChanges: 191096
我原本以为可能需要将日志写入文件,而不是按字面意思生成条目,但除非我误读了上下文this answer indicates otherwise。
显然我有一些配置错误。我的CSV是使用以下代码构建的:http://element533.blogspot.com/2010/05/writing-to-csv-using-log4net.html
Full appender:
<appender name="CsvFileAppender" type="log4net.Appender.FileAppender">
<file value="D:/home/logfiles/log4netCSV.log" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<appendToFile value="true"/>
<threshold value="INFO" />
<layout type=" myWeb.CsvPatternLayout, myWeb">
<header value="DateTime,Thread,Level,Logger,Message,Exception " />
<conversionPattern value="%date%newfield[%thread]%newfield %-5level%newfield% %property{Ip} _+ %aspnet-request{ASP.NET_SessionId} _+ %logger %newfield%message%newfield%exception%endrow" />
</layout>
</appender>
答案 0 :(得分:0)
你的日期显示为很奇怪
2018-03-19 21:59:52.000
默认格式为Iso8601,second和milisec之间的分隔符为逗号:
https://github.com/apache/logging-log4net/blob/master/src/DateFormatter/Iso8601DateFormatter.cs#L26
我建议你使用明确的日期:
%date{yyyy-MM-dd HH:mm:ss.fff}
此外,如果您需要CSV文件,则需要使用逗号分隔值:
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss.fff},[%thread],%level,..." />
我刚在Azure上对此进行了测试,看看它是否有任何操作,并且显示正确:
http://swagger-net-test.azurewebsites.net/log4net.log
我有一个接一个的两个日志操作,它们确实显示不同的时间戳
DateTime,Thread,Level,Logger,Message
2018-04-08 13:19:48.658,[20],INFO,Swagger_Test.Controllers.LogController,Test1
2018-04-08 13:19:48.689,[20],ERROR,Swagger_Test.Controllers.LogController,Test2