日期:2014-05-17  浏览次数:20956 次

Log4Net /Common.Logging.Log4Net/Common.Logging如何指定appender进行日志输出?


本人已配置的:

1)工程中配置Log4Net 的appender,在<root/>中指定输出到那个appender

2) 工程中使用Common.Logging.Log4Net,讲日志输出到Log4Net的appenders,Log4Net定义了两个文件类型的appenders,级别不一样,一个是info  一个是 error,这样 实现Info日志和error日志分开,不过觉得这样没多大意义,按Level很容易检索的

3)工程中同时使用 Common.Logging  和 Log4Net 并行的,分别把日志输出到控制台和MS-Sqlserver。

现在想实现指定appender输出日志,类似http://kb.cnblogs.com/page/42210/ 中说的根据不同的模块甚至更详细的功能来设置日志文档的存储路径。例如:娱乐新闻/weblog.txt,体育新闻/weblog.txt等等。

请指教,谢谢
log4net Common.Logging

------解决方案--------------------
参考
我觉得修改
<file value="log\Error.log"/>
这个属性就可以了吧。
------解决方案--------------------
config配置:

<!--日志记录器logger可以有多个-->
<logger name="logger_yule">
  <level value="ALL"/>
  <appender-ref ref="LogFileAppender_yule" />
</logger>
<logger name="logger_tiyu">
  <level value="ALL"/>
  <appender-ref ref="LogFileAppender_tiyu" />
</logger>
<!--1、一个appender可以被多个logger共用-->
<!--2、logger可以同时引用多个appender-->
<appender name="LogFileAppender_yule" type="log4net.Appender.FileAppender" >
    <param name="File" value="C:\娱乐新闻\weblog.txt" />
...
</appender>
<appender name="LogFileAppender_tiyu" type="log4net.Appender.FileAppender" >
    <param name="File" value="C:\体育新闻\weblog.txt" />
...
</appender>

代码:

public static void Error_yule(string message)
{
    log4net.ILog log = log4net.LogManager.GetLogger("LogFileAppender_yule");
    if (log.IsErrorEnabled)
    {
        log.Error(message);
    }
    log = null;
}

public static void Error_tiyu(string message)
{
    log4net.ILog log = log4net.LogManager.GetLogger("LogFileAppender_tiyu");
    if (log.IsErrorEnabled)
    {
        log.Error(message);
    }
    log = null;
}