C# 已停止在生产服务器上写入日志文件

C# 已停止在生产服务器上写入日志文件,c#,.net,iis,log4net,C#,.net,Iis,Log4net,编辑-我想我已经发现了根本原因-系统管理员在服务器上安装了NewRelic,它以某种方式覆盖了我的日志记录。有没有办法关掉这个 直到几周前,我有几个应用程序的日志记录还不错——系统管理员发誓说,他这方面没有任何变化,同样,我也不认为我的应用程序有任何变化 应用程序安装在Windows Servier 2012 R2、IIS 8.5上 我使用log4net,配置文件如下所示: <log4net> <root> <level value="ALL" /&g

编辑-我想我已经发现了根本原因-系统管理员在服务器上安装了NewRelic,它以某种方式覆盖了我的日志记录。有没有办法关掉这个

直到几周前,我有几个应用程序的日志记录还不错——系统管理员发誓说,他这方面没有任何变化,同样,我也不认为我的应用程序有任何变化

应用程序安装在Windows Servier 2012 R2、IIS 8.5上

我使用log4net,配置文件如下所示:

 <log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="file" />
  </root>
  <appender name="file" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="logs/application_log.xml"/>
    <appendToFile value="true" />
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
      <locationInfo value="true"/>
    </layout>
    <param name="Encoding" value="utf-8" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
  </appender>
</log4net>
  • 传统上,我必须在网站根目录中添加一个“logs”文件夹,并将“IIS AppPool\MyAppPool”用户添加到文件夹权限中,以提供完全控制

  • IIS应用程序池已设置为ApplicationPoolIdentity

这就足够了,日志将开始捕获-build+日志在我的本地机器上运行良好

  • 我还尝试添加NETWORKSERVICE、IIS/IUSR和其他

我试图解决这个问题的时间太长了,所以我想知道还有什么我可以尝试的吗?

当然有!打开log4net的调试日志功能

您的配置应该如下所示

<configuration>

...

<log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="file" />
  </root>
  <appender name="file" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="logs/application_log.xml"/>
    <appendToFile value="true" />
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
      <locationInfo value="true"/>
    </layout>
    <param name="Encoding" value="utf-8" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
  </appender>
</log4net>

...

<appSettings>
   <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

...   

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...

</configuration>

...
...
...   
...

当然有!打开log4net的调试日志功能

您的配置应该如下所示

<configuration>

...

<log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="file" />
  </root>
  <appender name="file" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="logs/application_log.xml"/>
    <appendToFile value="true" />
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
      <locationInfo value="true"/>
    </layout>
    <param name="Encoding" value="utf-8" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
  </appender>
</log4net>

...

<appSettings>
   <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

...   

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...

</configuration>

...
...
...   
...

这不是我问题的答案,但它让我找到了newrelic面包屑,非常感谢!这不是我的问题的答案,但它让我找到了newrelic面包屑,非常感谢!