.net log4net-命名空间的独立附加器
我一直在谷歌上搜索,但还没有找到我问题的答案。 我有我的应用程序,我有一个客户端库将我连接到一个数据库(在我的例子中,它是RavenDb)。.net log4net-命名空间的独立附加器,.net,log4net,.net,Log4net,我一直在谷歌上搜索,但还没有找到我问题的答案。 我有我的应用程序,我有一个客户端库将我连接到一个数据库(在我的例子中,它是RavenDb)。 我希望RavenDb客户端消息转到一个单独的文件(这意味着,来自Raven.Client.Xyz类实例的所有消息都应记录到Raven-Client.log文件中-客户端库执行的操作,例如连接到服务器、等待响应、获取/更新文档、查询索引等,而不是我的代码与客户端库交互时执行的操作。)。我如何才能做到这一点?我尝试了单独的appender,但随后RavenDb
我希望RavenDb客户端消息转到一个单独的文件(这意味着,来自Raven.Client.Xyz类实例的所有消息都应记录到Raven-Client.log文件中-客户端库执行的操作,例如连接到服务器、等待响应、获取/更新文档、查询索引等,而不是我的代码与客户端库交互时执行的操作。)。我如何才能做到这一点?我尝试了单独的appender,但随后RavenDb日志也出现在我的应用程序记录器中。
我使用的是xml配置,log4net版本是1.2.10您的做法是正确的。创建一个单独的附加器,然后使用如下代码选择一个特定的附加器,而不是抓取主记录器:
ILog ravenLog = LogManager.GetLogger("RavenDbAppenderName");
ILog nonRavenLog = Logmanager.GetLogger("Other appender name");
然后将相应的
ILog
传递到代码中的每个位置。事实上,我刚刚检查过,此解决方案有效:
<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>
对不起,各位,我的回答是正确的,我想我还不够清楚。我不想记录我的代码如何使用RavenDb客户端-我想记录客户端本身正在做什么(例如连接到服务器、获取/更新文档、等待响应等)我更新了question@chester89等等,你想重定向你正在使用的库自己生成的日志以使用log4net appender吗?不太清楚-RavenDb客户端知道如何写入日志,只需要正确配置它。请参阅我的答案