我有一个 Windows 服务app.config
and a log4net.config
.
app.config
:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net configSource="log4net.config" />
log4net.config
:
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="D:\Projects\Integration\Interface Module\bin\Logs\MyFirstLogger.log"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
我已将其添加到AssemblyInfo.cs
too:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
在我的一堂课上,我有:
private readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
and
_log.Info(content);
我给了all用户对我的日志文件夹具有完全权限。
我的 bin 文件夹(服务从中运行)有我的app.config
and log4net.config
.
但没有生成日志文件。我错过了哪些设置?
更新于 2014 年 3 月 4 日
如果您像我一样使用单独的配置文件(log4net.config),请记住设置Copy to output directory
设置为Copy always
在解决方案资源管理器中
请注意,当进程作为 Windows 服务运行时,Environment.CurrentDirectory 将为“C:\Windows\system32”
因此,如果将 log4net 配置文件 (log4net.config) 放在 *.exe 旁边,则可以使用以下代码来配置 log4net。
var assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
XmlConfigurator.Configure(new FileInfo(Path.Combine(assemblyFolder, "log4net.config")));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)