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要在配置文件中,有对应的节点值。
  • 相关阅读:
    SQLServer如何批量替换某一列中的某个字符串
    能成为一名合格的Java架构师
    来看看Uber的司机支持服务签到及预约系统的架构设计思路
    什么是三层架构?你真的理解分层的意义吗?
    京东7Fresh新零售架构设计分析
    解密京东千亿商品系统核心架构
    因特尔黑科技:黑暗中快速成像系统
    分布式缓存架构设计
    各种排序算法汇总小结
    系统架构设计之-任务调度系统的设计
  • 原文地址:https://www.cnblogs.com/soundcode/p/4861438.html
Copyright © 2011-2022 走看看