log4net得到了什么?而不是随机选择方法名

log4net得到了什么?而不是随机选择方法名,log4net,Log4net,我有.net 4.5.2应用程序,其中我使用的是log4net 1.2.15.0版本(即使是2.0.8版本) 我有随机行为,在方法名中我得到了?在我的文本文件中 我已尝试了%M或%M方法,此行为会随机重复出现 我的Appender设置是 <appender name="MyApp" type="log4net.Appender.RollingFileAppender" > <file value="..\\Logs\\MyApp.txt" /> <

我有.net 4.5.2应用程序,其中我使用的是log4net 1.2.15.0版本(即使是2.0.8版本) 我有随机行为,在方法名中我得到了?在我的文本文件中 我已尝试了%M或%M方法,此行为会随机重复出现 我的Appender设置是

 <appender name="MyApp" type="log4net.Appender.RollingFileAppender" >
    <file value="..\\Logs\\MyApp.txt" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />    
    <rollingStyle value="Date" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="INFO" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} %10p [%2t] %5c{1}.%method - %m%n" />
      <!-- <conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} %10p [%2t] %5c{1}.%M - %m%n" /> -->
    </layout>
  </appender>

日志文件中的示例输出文本为 2017-08-22 07:13:08.668信息[4]服务经理来自aaa的套接字连接回复在套接字连接尝试1时为真

请帮我找出问题所在

这是:

以下模式
%type%file%line%method%location%class%C%F%L%L%M
都会生成调用方位置信息。位置信息使用System.Diagnostics.StackTrace类生成调用堆栈。然后从该堆栈中提取调用方的信息

StackTrace信息在调试构建配置中的信息量最大。默认情况下,调试生成包含调试符号,而发布生成不包含调试符号。调试符号包含用于构造StackFrame和StackTrace对象的大部分文件、方法名、行号和列信息。由于优化过程中发生的代码转换,StackTrace可能不会报告预期数量的方法调用

这意味着在发布版本中,调用方信息可能不完整或根本不存在因此,在发布版本中不能依赖调用方位置信息。

文件还说:

生成呼叫者位置信息非常慢。除非执行速度不是问题,否则应避免使用它


你能用示例代码复制这个吗?就像使用此配置的简单控制台应用程序。无法在我的开发计算机(windows 10)上复制它。但我们的多个生产windows 2012 R2服务器,我有多个应用程序(一些windows服务和两个WCF应用程序),它可以复制randomly@KamranShahid你有没有试过编写一个控制台应用程序并从远程设备上运行它?没有任何事情是随机发生的,更重要的是,触发器可能非常罕见,难以追踪。因此,这意味着在我们部署在生产环境中的发布版本中,我们无法保证方法名称?这非常奇怪。感谢StuartWell,您可以禁用代码优化,向方法添加/或添加
[MethodImpl(MethodImplOptions.noinline)]
属性,但这是我个人不愿意做的权衡。在我的应用程序中,我必须非常关心性能,所以我不能在那里做。但它可能会帮助其他性能不那么关键的地方