Log4Net未显示准确的时间戳

Log4Net未显示准确的时间戳,log4net,Log4net,我正在使用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

我正在使用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
我曾经认为,这可能与日志何时写入文件有关,而不是与条目何时生成有关,除非我误读了上下文

很明显,我有点配置错误。我的CSV是使用以下位置的代码生成的:

完整附录:

  <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&#13;&#10;" />
      <conversionPattern value="%date%newfield[%thread]%newfield %-5level%newfield% %property{Ip} _+ %aspnet-request{ASP.NET_SessionId} _+ %logger %newfield%message%newfield%exception%endrow" />
    </layout>
  </appender>

很奇怪,你的日期显示出来了
2018-03-19 21:59:52.000

默认格式为Iso8601,秒和毫秒之间的分隔符为逗号:

我建议您使用明确的日期:
%date{yyyy-MM-dd HH:MM:ss.fff}

此外,如果需要CSV文件,则需要使用逗号分隔值:

更新: 我刚刚在Azure上测试了它,看看它是否有什么作用,结果正确显示:

我有两个日志操作,一个接一个,它们显示不同的时间戳

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

为什么不能在同一毫秒内发生多件事?另外,您是否使用了log4net上的抽象日志类?听起来好像有批处理行为来自某个地方。奇怪的是,我刚刚测试了conversionPattern
2018-04-06 19:02:53893
就是我得到的模式%date@JamesFaix-请注意,这些行引用了针对同一orderId的不同操作,因此不可能所有操作都同时发生。很明显,批处理-我该如何关闭它?@JamesFaix-对于“log4net上的抽象”问题:除了采用链接中提到的CSV appender之外,我不是(有意地)对Log4Net做任何事情-有没有想过如何解决批处理注入自身的问题?@justSteve通常我会尝试使用逐步调试程序来查看应用程序何时调用Log4Net方法。我对Azure没有任何经验,而且我最近刚开始接触AWS的云技术,所以我不确定那里有什么可以调试。也许Azure是部分原因?如果step thru不是一个选项,你能在本地应用程序中创建一个类似的子系统,看看它的行为是否相同吗?我不知道为什么我的日期会显示为现在的样子,因为我(无意中)没有超越任何东西(尽管我注意到链接文章中的示例输出显示为相同的方式)。“%newfield”起着逗号的作用。@请尝试几种不同的日期格式组合(如删除年份),确保日志反映了您的更改,如果没有,一定会有某些内容超出了您的日期