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要在配置文件中,有对应的节点值。
  • 相关阅读:
    利用web前端综合制作一个注册功能
    使用 kubeadm 快速部署一个 Kubernetes 集群
    部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下
    ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'gitee.com...'
    fatal: unable to access 'https://gitee.com/...': Could not resolve host: gitee.com
    Qt学生管理系统
    Qt5.14.2生成qsqlmysql.lib
    express框架实现数据库CRUD操作
    链表常见的题型和解题思路
    2 引用
  • 原文地址:https://www.cnblogs.com/soundcode/p/4861438.html
Copyright © 2011-2022 走看看