log4net可把log分别输出到不同的文件中

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

<log4net>
<logger name="ABCLogger">
<level value="ALL" />
<appender-ref ref="ABCLogFileAppender" />
</logger>

<logger name="XYZLogger">
<level value="ALL" />
<appender-ref ref="XYZLogFileAppender" />
</logger>

<appender name="ABCLogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="Log\ABCLog.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="" />
<param name="Footer" value="" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<appender name="XYZLogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="Log\XYZLog.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="" />
<param name="Footer" value="" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>

</log4net>
</configuration>

注意<configSections>必须放在第一个节点.

需要输出到db等其他地方的时候,只需追加不同的appender即可,

调用的时候

public enum ELogLevel
{
DEBUG = 1,
ERROR,
FATAL,
INFO,
WARN
}

public static class CLogger
{
#region Members

private static ILog GetLogger(string logName)
{
ILog logger = null;
if(logName.Equals(GlobalConst.ABCLogName))
logger = LogManager.GetLogger("ABCLogger");
if (logName.Equals(GlobalConst.XYZLogName))
logger = LogManager.GetLogger("XYZLogger");

return logger;
}
#endregion

#region Constructors

static CLogger()
{
XmlConfigurator.Configure();
}
#endregion

#region Methods

public static void WriteLog(string logName, ELogLevel logLevel, String log)
{
ILog logger = GetLogger(logName);
if (logLevel.Equals(ELogLevel.DEBUG))
{
logger.Debug(log);
}
else if (logLevel.Equals(ELogLevel.ERROR))
{
logger.Error(log);
}
else if (logLevel.Equals(ELogLevel.FATAL))
{
logger.Fatal(log);
}
else if (logLevel.Equals(ELogLevel.INFO))
{
logger.Info(log);
}
else if (logLevel.Equals(ELogLevel.WARN))
{
logger.Warn(log);
}
}
#endregion
}




posted on 2012-01-13 10:01  risan  阅读(338)  评论(0编辑  收藏  举报