我一直在谷歌搜索但尚未找到我的问题的答案。
我有我的应用程序,我有一个客户端库将我连接到数据库(在我的情况下,它是RavenDb)。
我希望RavenDb客户端消息转到一个单独的文件(意味着,来自Raven.Client.Xyz类实例的所有消息都应记录到raven-client.log文件 - 客户端库执行的操作,例如连接到服务器,等待响应,获取/更新文档,查询索引等,不是我的代码与客户端库交互的)。我怎样才能做到这一点?我尝试了单独的appender,但是RavenDb日志也出现在我的应用程序记录器中。
我使用的是xml配置,log4net版本是1.2.10
答案 0 :(得分:2)
实际上,我刚检查过,这个解决方案有效:
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate [%thread] %-3level %logger - %message%newline" />
</layout>
</appender>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="application.log" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate [%thread] %-3level %logger - %message%newline" />
</layout>
</appender>
<appender name="RavenClientFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="ravendb-client.log" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate [%thread] %-3level %logger - %message%newline" />
</layout>
</appender>
<logger name="Raven.Client" additivity="false">
<level value="debug" />
<appender-ref ref="RavenClientFileAppender" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
对不起大家,我 在
的正确轨道上答案 1 :(得分:0)
你走在正确的轨道上。创建一个单独的appender,然后使用以下代码选择一个特定的appender,而不是抓住主记录器:
ILog ravenLog = LogManager.GetLogger("RavenDbAppenderName");
ILog nonRavenLog = Logmanager.GetLogger("Other appender name");
然后将相应的ILog
传递到代码中的每个位置。