2012-03-21 28 views

回答

2

您可以很容易地配置多个appender。例如像这样:

<appender name="ConsoleAppender" ... 
    ... 
</appender> 

<appender name="RollingFileAppender" ... 
    ... 
</appender> 

<root> 
    <level value="ALL" /> 
    <appender-ref ref="ConsoleAppender" /> 
    <appender-ref ref="RollingFileAppender" /> 
</root> 

第二部分更难回答:这个想法不是选择appender并写入它。通常情况下,您使用记录器,只需在适当的日志级别写入您认为有用的任何内容即可。你不关心你的日志消息写在哪里:这是系统管理员决定的(恕我直言)。

实际上可以为不同的记录器使用不同的appender。系统管理员可能会决定将YourApp.Security命名空间中的所有错误记录到SMTP appender,而其余部分只会记录到数据库或文件。对记录仪的更多信息可以在这个优秀的教程中找到: http://www.beefycode.com/post/Log4Net-Tutorial-pt-5-Using-Logger-Objects.aspx

然而可以在代码中创建追加程序(示例代码可以发现here),但问题是,如果你真的想这样做。例如:如果您想在某些情况下发送电子邮件,那么我建议不要使用log4net。相反,您只需在自己的代码中创建并发送电子邮件。

+0

感谢您的回复。但是如果log4net支持多个appender登录多个源。那么为什么我们不能决定在运行时使用哪个appender?我的严重疑问是第二部分,我知道我们可以在同一个文件中有多个appender。但我的问题为什么我们不能在运行时使用c#代码选择任何一个? – 2012-03-22 11:27:51

+0

您可以决定记录器使用哪些appender,但我仍然想知道为什么您要这样做,并根据您的要求,如果没有其他解决方案。看看这里(应该让你开始): http://mail-archives.apache.org/mod_mbox/logging-log4net-user/200602.mbox/%[email protected]%3E – 2012-03-27 10:35:18

+0

谢谢斯蒂芬。这是我的预期。 – 2012-03-28 08:35:49