log4net的不记录或错误 [英] Log4Net doesn't log or error
问题描述
我一直在试图获得log4net的日志记录,但没有成功或任何noticable错误,我的asp.net web应用程序。我试图使用ADONetAppender附加器具有以下配置:
I have been attempting to get log4net logging in my asp.net web application with no success or any noticable errors. I am attempting to use the ADONetAppender appender with the following config:
<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[Context]) VALUES
(@log_date, @thread, @log_level, @logger, @message, @exception, @context)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%t" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="512" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<parameter>
<parameterName value="@context" />
<dbType value="String" />
<size value="512" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%x" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="512" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%c" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ADONetAppender" />
</root>
在我的Global.asax的Application_Start我称之为
In my global.asax Application_Start I call
log4net.Config.XmlConfigurator.Configure();
然后再尝试登录:
Then to attempt to log:
protected static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected void Page_Load(object sender, EventArgs e)
{
log.Info("did I log yet?");
}
这一切什么都不做,据我可以告诉。
All of this does nothing as far as I can tell.
推荐答案
你有没有加入下配置 - >添加Configsections以下部分在
Have you added added the following section under under Configuration->Configsections
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
虽然有可能你的log4net的配置设置添加到您的项目的app.config或web.config文件,它是preferable将它们放在一个单独的配置文件。除了维修的明显的好处,它有额外的好处log4net的可以放置在您的配置文件中的 FileSystemWatcher的
要监视的对象时,它的变化,并动态更新其设置。
Although it is possible to add your log4net configuration settings to your project’s app.config or web.config file, it is preferable to place them in a separate configuration file. Aside from the obvious benefit of maintainability, it has the added benefit that log4net can place a FileSystemWatcher
object on your config file to monitor when it changes and update its settings dynamically.
要使用一个单独的配置文件,添加一个名为 Log4Net.config
到您的项目文件,下面的属性添加到您的的AssemblyInfo.cs
文件:
To use a separate config file, add a file named Log4Net.config
to your project and add the following attribute to your AssemblyInfo.cs
file:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
注意:Web应用程序,这是假定Log4Net.config驻留在Web根。确保log4net.config文件被标记为复制到输出 - >复制始终在属性
Note: for web applications, this assumes Log4Net.config resides in the web root. Ensure the log4net.config file is marked as "Copy To Output" -> "Copy Always" in Properties.
这篇关于log4net的不记录或错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!