日志文件在生产服务器上停止写入
Log files stopped writing on production server
编辑 - 我想我已经发现了根本原因 - 系统管理员在服务器上安装了 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>
AssemblyInfo 将此附加到末尾
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
我传统上必须在网站根目录中添加一个 'logs' 文件夹,并将 'IIS AppPool\MyAppPool' 用户添加到文件夹权限,给予完全控制。
IIS 应用程序池设置为 ApplicationPoolIdentity。
这就足够了,日志将开始捕获 - 构建 + 日志在我的本地机器上运行良好。
- 我也尝试添加 NETWORKSERVICE、IIS/IUSRS 和其他人
我已经尝试解决这个问题太久了,所以想知道是否还有什么我可以尝试的?
当然有!打开 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,它以某种方式覆盖了我的日志记录。有什么办法可以关闭它吗?
我有几个应用程序直到几周前都还可以正常记录 - 系统管理员发誓他这边没有任何变化,同样我认为我的也没有任何变化。
应用程序在 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>
AssemblyInfo 将此附加到末尾
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
我传统上必须在网站根目录中添加一个 'logs' 文件夹,并将 'IIS AppPool\MyAppPool' 用户添加到文件夹权限,给予完全控制。
IIS 应用程序池设置为 ApplicationPoolIdentity。
这就足够了,日志将开始捕获 - 构建 + 日志在我的本地机器上运行良好。
- 我也尝试添加 NETWORKSERVICE、IIS/IUSRS 和其他人
我已经尝试解决这个问题太久了,所以想知道是否还有什么我可以尝试的?
当然有!打开 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>