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要在配置文件中,有对应的节点值。
  • 相关阅读:
    SQL Server中生成指定长度的流水号
    属性与字段的区别
    Tomcat启动时的异常~!!!
    全面认识验证身份的数字证书
    MyEclipse 5.5 开发 Spring + Struts + Hibernate 的详解视频(长1.5小时)
    resin是什么?是Application Server吗?是WebLogic,Websphere他们的竞争对手吗?
    发现一个HTML得秘密
    用 MyEclipse 开发的最简单的 Spring 例子
    什么是WebSphere?WebSphere是干什么用的?中间件是什么意思?
    简单jsp+servlet实例
  • 原文地址:https://www.cnblogs.com/soundcode/p/4861438.html
Copyright © 2011-2022 走看看