http://www.cnblogs.com/chendaoyin/archive/2013/04/17/3026717.html
一个新项目,直接用了一些之前的代码,突然跟踪不到日志了。检查发现了原因,特在此记录。
log4net的配置文件log4net_config.xml
<?
xml version="1.0" encoding="utf-8"
?>
< log4net >
< appender name ="TastInfo" type ="log4net.Appender.RollingFileAppender" >
< file value ="Log\\Info\\" />
< appendToFile value ="true" />
< rollingStyle value ="Composite" />
< maxSizeRollBackups value ="-1" />
< maximumFileSize value ="1MB" />
< staticLogFileName value ="false" />
< DatePattern value ="yyyy-MM-dd".txt"" />
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date %-5level - %message%newline" />
</ layout >
</ appender >
< appender name ="TastError" type ="log4net.Appender.RollingFileAppender" >
< file value ="log\\Error\\" />
< appendToFile value ="true" />
< rollingStyle value ="Composite" />
< maxSizeRollBackups value ="-1" />
< maximumFileSize value ="1MB" />
< staticLogFileName value ="false" />
< DatePattern value ="yyyy-MM-dd".txt"" />
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date %-5level - %message%newline" />
</ layout >
</ appender >
< appender name ="TastDebug" type ="log4net.Appender.RollingFileAppender" >
< file value ="log\\Debug\\" />
< appendToFile value ="true" />
< rollingStyle value ="Composite" />
< maxSizeRollBackups value ="-1" />
< maximumFileSize value ="1MB" />
< staticLogFileName value ="false" />
< DatePattern value ="yyyy-MM-dd".txt"" />
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date %-5level - %message%newline" />
</ layout >
</ appender >
< logger name ="Info" >
< level value ="ALL" />
< appender-ref ref ="Info" />
< appender-ref ref ="TastInfo" />
</ logger >
< logger name ="Error" >
< level value ="ALL" />
< appender-ref ref ="Error" />
< appender-ref ref ="TastError" />
</ logger >
< logger name ="Debug" >
< level value ="ALL" />
< appender-ref ref ="Debug" />
< appender-ref ref ="TastDebug" />
</ logger >
</ log4net >
< log4net >
< appender name ="TastInfo" type ="log4net.Appender.RollingFileAppender" >
< file value ="Log\\Info\\" />
< appendToFile value ="true" />
< rollingStyle value ="Composite" />
< maxSizeRollBackups value ="-1" />
< maximumFileSize value ="1MB" />
< staticLogFileName value ="false" />
< DatePattern value ="yyyy-MM-dd".txt"" />
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date %-5level - %message%newline" />
</ layout >
</ appender >
< appender name ="TastError" type ="log4net.Appender.RollingFileAppender" >
< file value ="log\\Error\\" />
< appendToFile value ="true" />
< rollingStyle value ="Composite" />
< maxSizeRollBackups value ="-1" />
< maximumFileSize value ="1MB" />
< staticLogFileName value ="false" />
< DatePattern value ="yyyy-MM-dd".txt"" />
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date %-5level - %message%newline" />
</ layout >
</ appender >
< appender name ="TastDebug" type ="log4net.Appender.RollingFileAppender" >
< file value ="log\\Debug\\" />
< appendToFile value ="true" />
< rollingStyle value ="Composite" />
< maxSizeRollBackups value ="-1" />
< maximumFileSize value ="1MB" />
< staticLogFileName value ="false" />
< DatePattern value ="yyyy-MM-dd".txt"" />
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date %-5level - %message%newline" />
</ layout >
</ appender >
< logger name ="Info" >
< level value ="ALL" />
< appender-ref ref ="Info" />
< appender-ref ref ="TastInfo" />
</ logger >
< logger name ="Error" >
< level value ="ALL" />
< appender-ref ref ="Error" />
< appender-ref ref ="TastError" />
</ logger >
< logger name ="Debug" >
< level value ="ALL" />
< appender-ref ref ="Debug" />
< appender-ref ref ="TastDebug" />
</ logger >
</ log4net >
log4net的应用错误代码:
public
class Log
{
private static string DefaultName = " log ";
static Log()
{
string path = AppDomain.CurrentDomain.BaseDirectory + @" \log4net_config.xml ";
log4net.Config.XmlConfigurator.Configure( new FileInfo(path));
}
public static log4net.ILog GetLog( string logName)
{
log4net.ILog log = log4net.LogManager.GetLogger(logName);
return log;
}
public static void debug( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsDebugEnabled)
log.Debug(message);
log = null;
}
public static void debug( string message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsDebugEnabled)
log.Debug(message, ex);
log = null;
}
public static void error( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsErrorEnabled)
log.Error(message);
log = null;
}
public static void error( string message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsErrorEnabled)
log.Error(message, ex);
log = null;
}
public static void fatal( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsFatalEnabled)
log.Fatal(message);
log = null;
}
public static void info( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsInfoEnabled)
log.Info(message);
log = null;
}
public static void warn( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsWarnEnabled)
log.Warn(message);
log = null;
}
}
{
private static string DefaultName = " log ";
static Log()
{
string path = AppDomain.CurrentDomain.BaseDirectory + @" \log4net_config.xml ";
log4net.Config.XmlConfigurator.Configure( new FileInfo(path));
}
public static log4net.ILog GetLog( string logName)
{
log4net.ILog log = log4net.LogManager.GetLogger(logName);
return log;
}
public static void debug( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsDebugEnabled)
log.Debug(message);
log = null;
}
public static void debug( string message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsDebugEnabled)
log.Debug(message, ex);
log = null;
}
public static void error( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsErrorEnabled)
log.Error(message);
log = null;
}
public static void error( string message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsErrorEnabled)
log.Error(message, ex);
log = null;
}
public static void fatal( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsFatalEnabled)
log.Fatal(message);
log = null;
}
public static void info( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsInfoEnabled)
log.Info(message);
log = null;
}
public static void warn( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsWarnEnabled)
log.Warn(message);
log = null;
}
}
不输出日志的原因是因为, 默认private static string DefaultName = "log",在配置文件里面找不到对应的节点值。
正确的应用代码:
public
class Log
{
private const string SError = " Error ";
private const string SDebug = " Debug ";
private const string DefaultName = " Info ";
static Log()
{
var path = AppDomain.CurrentDomain.BaseDirectory + @" \log4net_config.xml ";
log4net.Config.XmlConfigurator.Configure( new FileInfo(path));
}
public static log4net.ILog GetLog( string logName)
{
var log = log4net.LogManager.GetLogger(logName);
return log;
}
public static void Debug( string message)
{
var log = log4net.LogManager.GetLogger(SDebug);
if (log.IsDebugEnabled)
log.Debug(message);
}
public static void Debug( string message, Exception ex)
{
var log = log4net.LogManager.GetLogger(SDebug);
if (log.IsDebugEnabled)
log.Debug(message, ex);
}
public static void Error( string message)
{
var log = log4net.LogManager.GetLogger(SError);
if (log.IsErrorEnabled)
log.Error(message);
}
public static void Error( string message, Exception ex)
{
var log = log4net.LogManager.GetLogger(SError);
if (log.IsErrorEnabled)
log.Error(message, ex);
}
public static void Fatal( string message)
{
var log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsFatalEnabled)
log.Fatal(message);
}
public static void Info( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsInfoEnabled)
log.Info(message);
}
public static void Warn( string message)
{
var log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsWarnEnabled)
log.Warn(message);
}
}
{
private const string SError = " Error ";
private const string SDebug = " Debug ";
private const string DefaultName = " Info ";
static Log()
{
var path = AppDomain.CurrentDomain.BaseDirectory + @" \log4net_config.xml ";
log4net.Config.XmlConfigurator.Configure( new FileInfo(path));
}
public static log4net.ILog GetLog( string logName)
{
var log = log4net.LogManager.GetLogger(logName);
return log;
}
public static void Debug( string message)
{
var log = log4net.LogManager.GetLogger(SDebug);
if (log.IsDebugEnabled)
log.Debug(message);
}
public static void Debug( string message, Exception ex)
{
var log = log4net.LogManager.GetLogger(SDebug);
if (log.IsDebugEnabled)
log.Debug(message, ex);
}
public static void Error( string message)
{
var log = log4net.LogManager.GetLogger(SError);
if (log.IsErrorEnabled)
log.Error(message);
}
public static void Error( string message, Exception ex)
{
var log = log4net.LogManager.GetLogger(SError);
if (log.IsErrorEnabled)
log.Error(message, ex);
}
public static void Fatal( string message)
{
var log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsFatalEnabled)
log.Fatal(message);
}
public static void Info( string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsInfoEnabled)
log.Info(message);
}
public static void Warn( string message)
{
var log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsWarnEnabled)
log.Warn(message);
}
}
总结:log4net.LogManager.GetLogger(Name),这里面的Name要在配置文件中,有对应的节点值。