Joh*_*ith 30 c# log4net asp.net-mvc-3 log4net-configuration
我在我的ASP.NET MVC3项目中使用log4net,但所有日志属性,如IsDebugEnabled== false
在我的AssemblyInfo中,我有:
[assembly: XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)
在我的日志课中,我有
public Log4NetLogger()
{
log4net.Config.XmlConfigurator.Configure();
Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
Run Code Online (Sandbox Code Playgroud)
我在Web.Config中的相关配置是:
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
-->
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</sectionGroup>
</configSections>
<log4net debug="false">
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="{removed}" />
<commandText value="INSERT INTO Logging ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<!--Possible levels:-->
<!--DEBUG-->
<!--INFO-->
<!--WARN-->
<!--ERROR-->
<!--FATAL-->
<root>
<level value="All" />
<appender-ref ref="AdoNetAppender" />
</root>
</log4net>
</applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我已经沮丧到想要做的事情
public Log4NetLogger()
{
Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Logger.IsDebugEnabled = true;
}
Run Code Online (Sandbox Code Playgroud)
但当然Logger.IsDebugEnabled没有任何二传手:/
为了让这个该死的东西起作用,我该怎么做?
Ben*_*ron 29
我遇到过同样的问题.我通过使用Application_StartGlobal.asax.cs 中的方法中的以下代码行来解决它(假设它是一个.Net Web应用程序)
log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)
Azi*_*uth 19
将您的行更改为以下内容AssemblyInfo.cs:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
并将log4net的配置放在该文件中.
小智 7
您未能在应用程序中初始化 log4net。这可以通过放置在“Application_Start”下面来显式初始化,
log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)
或者
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
Run Code Online (Sandbox Code Playgroud)
在 AssemblyInfo.cs 中
Log4net期望其配置部分不被分组.因为在您的配置中,您将log4net部分放在ApplicationSettingsGroup (applicationSettings)log4net中将无法找到其配置.您可以将log4net部分移到组外部,也可以在调用时指定组XmlConfigurator.Configure:
XmlConfigurator.Configure(
ConfigurationManager.GetSection(
"applicationSettings/log4net") as XmlElement);
Run Code Online (Sandbox Code Playgroud)
我以前从未见过<level value="All" />,通常我只是设置value为其中一个级别(因为它们包含它们之上的级别,或者当您将它们列在配置中的级别堆栈中时包含它们之下的级别)。像这样的东西:
<level value="DEBUG" />
Run Code Online (Sandbox Code Playgroud)
您也可以尝试使用显式记录器对其进行测试,看看问题是否可能是其他原因。appender与节点相邻的简单内容如下:
<logger name="Log4NetTEST" >
<level value="DEBUG" />
<appender-ref ref="AdoNetAppender" />
</logger>
Run Code Online (Sandbox Code Playgroud)
然后,当在代码中测试它时,您将创建如下记录器:
LogManager.GetLogger("Log4NetTEST");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29067 次 |
| 最近记录: |