我一直试图使用Log4Net AdoNetAppender将.Net网站中的错误记录到SQL数据库中,但是错误消息没有记录在数据库中。似乎AdoNetAppender没有启用或读取。在调试时,我观察到的是Logger.Log将其所有属性值显示为false。即IsErrorEnabled / IsDebugEnabled / IsFatalEnabled / IsInfoEnabled / IsWarnEnabled全部都为false。
我正在使用的log4net.dll版本是2.0.8.0
click here to view image of object properties
logging.cs代码如下:
delegate.fcmToken
下面是app.config:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Utility.Library
{
public class Logging
{
public static class Logger
{
public static ILog Log = LogManager.GetLogger(typeof(SharedMethods));
}
public static class LogException
{
private static StringBuilder sessionJobLogBuilder = new StringBuilder();
public static void LogError(string sMsg, Exception ex)
{
Logger.Log.Error(sMsg, ex);
sessionJobLogBuilder.AppendLine(sMsg + Environment.NewLine);
sessionJobLogBuilder.AppendLine(ex.ToString() + Environment.NewLine);
}
public static void LogInfo(string sMsg)
{
Logger.Log.Info(sMsg);
sessionJobLogBuilder.AppendLine(sMsg + Environment.NewLine);
}
}
}
}
但是所有级别的Logger.Log属性都显示为false。
答案 0 :(得分:0)
根据您的评论,我读到您有一个单独的app.config
文件和一个单独的程序集中定义的Logger
类。
ASP.NET
网站仅考虑web.config
文件。
您的app.config
文件未加载,因此Log4net
配置未得到应用。
解决此问题的一种方法是将app.config
文件转换为单独的Log4net
配置文件并显式加载。
将<log4net> ... </log4net>
内容从app.config
文件移动到网站项目根目录中的另一个文件(按照惯例,命名为Log4net.config
) 。
<log4net>
元素必须是该文件中的根xml元素。
从您的[assembly: log4net.Config.XmlConfigurator(Watch = true)]
项目中删除Logger
。
将以下代码添加到网站项目Application_Start
中的Global.asax
中,以确保在网站启动阶段加载log4net
配置。
void Application_Start(object sender, EventArgs e)
{
ILoggerRepository repository = log4net.LogManager.GetRepository(Assembly.GetExecutingAssembly());
XmlConfigurator.Configure(repository, new FileInfo(Server.MapPath("log4net.config")));
// Remaining startup code.
}
在我的网站项目(靠近web.config)的根目录中,我只有一个log4net.config
以下的RollingFileAppender
,但概念是相同的。
<log4net>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<param name="ImmediateFlush" value="true" />
<file value="Log.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ERROR" />
<appender-ref ref="file" />
</root>
</log4net>
AdoNetAppender
中的Log4net.config
设置为IsDebugEnabled
,IsErrorEnabled
等的期望值。
XmlConfigurator.Configure
方法调用中)并提供如上所示的配置,可以解决此问题。