log4net 使用

一、在nuget中搜索log4net,然后直接安装

二、无论是CS还是BS都可以在AssemblyInfo.cs文件里添加以下的语句:
  [assembly: log4net.Config .XmlConfigurator(ConfigFile ="log4net.config")]

  还有ConfigFileExtension(配置文件的扩展名) 和 Watch(表示是否监视该配置文件)

       或者建一个类,CS端在Main方法中调用,BS在Global.asax.cs的Application_Start方法中调用

  

 public class LogHelper
    {
        static LogHelper()
        {
            var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
            XmlConfigurator.Configure(logCfg);
        }

        private static LogHelper _instance = null;
        private static ILog ILog;

        public static ILog Log(Type t)
        {
            if (_instance == null)
                _instance = new LogHelper();
            ILog = LogManager.GetLogger(t);
            return ILog;
        }

        public static ILog Log(string type)
        {
            if (_instance == null)
                _instance = new LogHelper();
            ILog = LogManager.GetLogger(type);
            return ILog;
        }


    }
View Code

注意配置文件必须要放到bin下面的目录里

三、配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
<log4net>
  <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log\" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd'.log'" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="FileAppender" />
  </root>
</log4net>
 </configuration>
View Code

 

也可以使用代码配置

/// <summary>
    /// 日志
    /// </summary>
    public static class LogHelper
    {
        public static void Setup(Level level)
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

            // 文件Appender
            PatternLayout filePatternLayout = new PatternLayout
            {
                ConversionPattern = "%date{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %-75.75logger - %message%newline"
            };
            filePatternLayout.ActivateOptions();
            RollingFileAppender fileAppender = new RollingFileAppender
            {
                Encoding = Encoding.UTF8,
                AppendToFile = true,
                File = @".\log\",
                RollingStyle = RollingFileAppender.RollingMode.Date,
                StaticLogFileName = false,
                PreserveLogFileNameExtension = true,
                Layout = filePatternLayout,
                DatePattern = "yyyyMMdd'.log'"
            };
            fileAppender.ActivateOptions();

            // 控制台Appender
            PatternLayout consolePatternLayout = new PatternLayout
            {
                ConversionPattern = "%date{yyyy-MM-dd HH:mm:ss} [%thread] - %message%newline"
            };
            consolePatternLayout.ActivateOptions();
            ConsoleAppender consoleAppender = new ConsoleAppender();
            consoleAppender.Layout = consolePatternLayout;
            consoleAppender.ActivateOptions();

            // 添加Appenders
            hierarchy.Root.AddAppender(fileAppender);
            hierarchy.Root.AddAppender(consoleAppender);
            hierarchy.Root.Level = level;
            hierarchy.Configured = true;
        }

        private static Dictionary<Type, ILog> Loggers = new Dictionary<Type, ILog>();

        private static object locker = new object();

        public static ILog Write
        {
            get
            {
                Type triggerType = new StackTrace().GetFrames().Skip(1).First().GetMethod().DeclaringType;

                if (triggerType == null)
                    triggerType = typeof(LogHelper);
                

                if (!Loggers.ContainsKey(triggerType))
                {
                    lock (locker)
                    {
                        if (!Loggers.ContainsKey(triggerType))
                        {
                            Loggers.Add(triggerType, LogManager.GetLogger(triggerType));
                        }
                    }
                }

                return Loggers[triggerType];
            }
        }
    }
View Code

 

还有很多配置可以参考

http://logging.apache.org/log4net/release/config-examples.html

四、调用

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("dfasdfas");
            ILog log = LogHelper.Log(typeof(Program));
            log.Info("dadafds");
            log.Debug("debug");
        }
    }
View Code

 

posted on 2019-07-17 13:41  lovezj9012  阅读(182)  评论(0编辑  收藏  举报

导航