【发布时间】:2015-01-22 02:41:33
【问题描述】:
我正在使用 log4net 在我的应用程序中记录错误。但是没有创建日志文件。据我所见,代码很好。
Web.config 代码
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<!-- Pattern to output the caller's file name and line number -->
<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
</layout>
</appender>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="C:\Demo\example.log" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="Console" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
在 AssemblyInfo.cs 文件中,我添加了以下代码
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
在我要跟踪错误的类中,我添加了以下代码
private static readonly ILog logger = LogManager.GetLogger(typeof(ProviderRepository));
我在 catch 块中使用记录器。
logger.Error(Ex.Message);
但我没有看到日志文件。我在这里做错了吗?
【问题讨论】:
-
尝试私有静态只读 ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
还可以尝试将配置分离到单独的 log4net.config 文件并调整 AssemblyInfo 中的声明 - 我认为这对我有用。
-
我做了你提到的更改。不幸的是,我仍然面临同样的问题。
-
还有其他建议吗? ..我需要完成一个DemoApp。时间对我来说至关重要。非常感谢您的回复。
-
您在控制台中看到日志吗?您确定要进入 catch 块(在方法的开头添加 log.Debug 并在控制台中检查)?
标签: log4net log4net-configuration