RollingfileAppender由于某些特定的配置而无法响应 - 尽管AdonetAppender工作正常

时间:2010-07-09 03:42:37

标签: c# .net log4net

在正常的单独XML文件配置中,我放在我的根目录中,我的应用程序可以很好地处理两个appender。

但是,我发现了一种从外部文件配置的简单而有效的方法,这使我可以灵活地为不同的应用程序使用相同的配置文件......

另外一个优点是我不需要对global.asax和assembly进行任何修改。

以下是我添加到web.config

的代码
<appSettings>
    <add key="log4net.Config" value="C:\\log\Log4Net.config"/>
</appSettings>

此代码假定将配置文件放在我的根目录中。我需要做的就是引用log4net.dll并开始记录。

即使我的AdoNetAppender完全正常工作,我立即在桌面上看到这些消息。 但是我的fileAppenders没有创建任何文件既不将消息记录到现有文件。这种方式只与数据库兼容还是我遗漏了什么?

2 个答案:

答案 0 :(得分:1)

您可以将RollingFileAppender的LockingModel设置为MinimalLock,以强制appender为每个日志记录事件打开和关闭文件。不完全有效,并且如果一个应用程序尝试在同一时间尝试登录,则仍有可能无法记录,但如果您的记录频率足够低,则可能就足够了。

更好的解决方案是使用模式字符串作为包含应用程序名称的appender的文件名;这样,不同的应用程序可以使用相同的配置文件,但会写入不同的日志文件。在大多数情况下,“%appdomain”变量将用于此目的(尽管对于Web或ClickOnce应用程序,您必须获得更多创意)。

答案 1 :(得分:0)

使用标准的RollingFileAppender无法从多个进程登录到一个文件,因为appender会锁定要写入的文件。 log4net FAQ为此提供了解决方案。

请参阅log4net FAQ

此致