首页 > Windows开发 > 详细

C# log4net 不输出日志

时间:2015-10-08 18:03:09      阅读:351      评论:0      收藏:0      [点我收藏+]

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

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要在配置文件中,有对应的节点值。

C# log4net 不输出日志

原文:http://www.cnblogs.com/soundcode/p/4861438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!