我有一个使用log4net的.Net 4.0 Windows服务应用程序。
这是我的log4net配置。
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
</layout>
</appender>
<appender name="ColorConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="FATAL" />
<foreColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="WARN" />
<foreColor value="Blue, HighIntensity" />
</mapping>
<mapping>
<level value="INFO" />
<forecolor value="White, HighIntensity" />
</mapping>
<mapping>
<level value="DEBUG" />
<forecolor value="Green, HighIntensity" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
</layout>
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<file value="Logs/Server.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
</layout>
<maximumFileSize value="10MB" />
<rollingStyle value="Composite" />
<staticLogFileName value="true" />
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="ColorConsoleAppender" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
当使用在调试模式下构建的exe(在正确的文件路径中创建日志文件)启动服务时,日志记录按预期工作,但在使用内置于发布模式的exe时不起作用。
我已尝试按照此博客中提到的步骤使用重新编译的log4net dll for .Net 4.0。http://tseonet.blogspot.com/2010/07/making-log4net-run-on-net-40.html。
但是,这也不起作用。
非常感谢任何帮助。
答案 0 :(得分:8)
我建议打开内部调试,如下所述:
答案 1 :(得分:4)
谢谢Deepu
将[assembly:log4net.Config.XmlConfigurator(Watch = true)]添加到为我工作的assemblyInfo文件中
答案 2 :(得分:1)
我今天偶然发现了同样的问题,在经过log4net docs之后做了以下事情,这对我有用。
log4net.Config.XmlConfigurator.Configure();
认为值得分享。下面是使用log4net作为提供者的记录器类
/// <summary>
/// Logger class using log4net library
/// </summary>
public class Log4NetLogger : ILogger
{
public Log4NetLogger(Type configType)
{
log4net.Config.XmlConfigurator.Configure();
this._logger = LogManager.GetLogger(configType);
}
}
对于我来说,程序集属性不是一个选项,因为我将日志记录功能包装到一个单独的程序集中,其中log4net是提供程序之一。