zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    P4097 [HEOI2013]Segment 李超线段树
    P3592 [POI2015]MYJ
    P3698 [CQOI2017]小Q的棋盘
    P4098 [HEOI2013]ALO 可持久化01Trie
    P2331 [SCOI2005]最大子矩阵
    P4099 [HEOI2013]SAO
    loj #6032. 「雅礼集训 2017 Day2」水箱 线段树优化DP转移
    CF765F Souvenirs 离线+线段树+主席树
    CF1097D Makoto and a Blackboard
    loj #6570. 毛毛虫计数
  • 原文地址:https://www.cnblogs.com/ZJ199012/p/11200512.html
Copyright © 2011-2022 走看看