zoukankan      html  css  js  c++  java
  • C# log4net 不输出日志

    一个新项目,直接用了一些之前的代码,突然跟踪不到日志了。检查发现了原因,特在此记录。 

    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&quot;.txt&quot;"/>

    <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&quot;.txt&quot;"/>

    <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&quot;.txt&quot;"/>

    <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",在配置文件里面找不到对应的节点值。

    正确的应用代码:

    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);

    }

    }

    总结:log4net.LogManager.GetLogger(Name),这里面的Name要在配置文件中,有对应的节点值。
  • 相关阅读:
    错误滚动条eclipse快速定位到错误处
    路径原因linux下tomcat无法启动
    提示命令命令行将U盘文件系统转换成ntfs
    客户传真第四部分 个人理财风险防范8.当心银行汇款引发的诈骗
    请求错误[Python]网络爬虫(三):异常的处理和HTTP状态码的分类
    范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
    编程程序国外程序员的BASIC情结——我的编程生涯始于BASIC
    执行取消利用timer实现的倒计时
    文件分析IDA反汇编/反编译静态分析iOS模拟器程序(二)加载文件与保存数据库
    安全业务第四部分 个人理财风险防范9.取款也要加小心
  • 原文地址:https://www.cnblogs.com/soundcode/p/4861438.html
Copyright © 2011-2022 走看看