我在 Web 应用程序中使用 log4net
Nuget 包版本 2.0.8
。
每当在 log.txt
文件中记录的应用程序中引发任何异常时。它在本地运行良好。但是它在服务器中不起作用。在服务器中,只有日期时间值被写入日志文件,而不是异常详细信息。
下面是Web.config
文件中的配置:
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="DatePattern" value="-yyyy-MM-dd'.txt'" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="true" />
<param name="MaxSizeRollBackups" value="-1" />
<param name="RollingStyle" value="Date" />
<param name="CountDirection" value="1" />
<param name="File" value="D:\Logs\log.txt" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%newline%d %property{log4net:HostName} [%t] %-5p - %m%n" />
</layout>
<threshold value="ERROR"/>
</appender>
<root>
<priority value="All" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
log4net 部分也在 Web.config 文件中定义:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" requirePermission="false" />
</configSections>
在类级别变量中创建Log对象如下:
private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
异常记录如下:
try
{
}
catch (Exception ex)
{
Log.Error( "Test exception :" + ex.Message, ex);
}
在服务器中,只有日期时间被写入日志文件,而不是异常详细信息。请参阅下图以供引用:
在 Global.asax
文件中,log4net 的注册方式如下:
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
谁能帮我解决这个错误。感谢您的帮助。
最佳答案
在我更改 Web.config
文件中的 log4net
设置后它起作用了:
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%newline%d %message" />
</layout>
我注意到错误日志在 ~2 分钟
后写入文件。所以不要打开文件查看日志。等待约 2 分钟,然后打开。
关于c# - Log4net File Appender 未在服务器中记录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45452072/