zoukankan      html  css  js  c++  java
  • 日志-log4net

    一、log4net介绍

         log4net是一个第三方日志框架,有三个主要组件:loggers,appenders和layouts。这3个组件一起工作使得开发者能够根据信息类型和等级(Lever)记录信息,以及在运行时控制信息的格式化和信息的写入位置(如控制台,文件,内存,数据库等)。

         Appender:可以将日志输出到不同地方,不同的输出目标对应不同的Appender,如RollingFileAppender(滚动文件),AdoNetAppender(数据库),SmtpAppender(邮件),ConsoleAppender(控制台)等。

         level(级别):标识这条日志的重要级别。None>Fatal>ERROR>WARN>DEBUG>INFO>ALL,设定一个Level,那么低于这个Leveld 日志是不会被写入到Appender中的。

         log4net还可以设定多个Appender,可以实现同时将日志记录到文件、数据库、发邮件等。可以设定不同Appender的不同level,例如:实现普通级别记录到文件,Error以上级别都记录到数据库。还可以自定义Appender,自己实现将Error发短信等。

    二、创建log4net Demo

         1.创建控制台应用程序Log4netDemo

         2.右键Log4netDemo项目,选择“管理NuGet程序包”,搜索“log4net”,添加log4net程序包

       3.添加配置文件log4net.config,配置文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <log4net>     
        <root>
          <!-- Set root logger level to ERROR and its appenders -->
          <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
          <level value="DEBUG"/>
          <appender-ref ref="RollingAppender"/>
          <appender-ref ref="ConsoleAppender"/>
        </root>
        <!--指定日志记录的方式:以滚动文件的方式-->
        <appender name="RollingAppender" type="log4net.Appender.RollingFileAppender,log4net" >
          <!--指定日志存放的路径-->
          <file value="D:logs" />
          <!--日志以追加的形式记录-->
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <!--设置日志文件名称的生成规则-->
          <datePattern value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
          <!--多线程时采用最小锁定-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
          <!--日志名称是否静态:否-->
          <staticLogFileName value="false" />
          <!--日志内容格式和布局设置-->
          <layout type="log4net.Layout.PatternLayout,log4net">
             <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:  %-5level %n错误描述:%-40.40logger - %message%newline %n" />
          </layout>
        </appender>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net">
          <layout type="log4net.Layout.PatternLayout,log4net">
             <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:  %-5level %n错误描述:%-40.40logger - %message%newline %n" />
          </layout>
        </appender>
      </log4net>
    </configuration> 

        配置文件中设置了两个Appender:RollingFileAppender和ConsoleAppender,将日志文件同时输出到文件和控制台

       4.添加封装类Logger,代码如下:

     public class Logger
        {
            static Logger()
            {
                XmlConfigurator.Configure(new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config")));
                ILog Log = LogManager.GetLogger(typeof(Logger));
            }
    
            private ILog loger = null;
            public Logger(Type type)
            {
                loger = LogManager.GetLogger(type);
            }
    
            /// <summary>
            /// Log4日志
            /// </summary>
            /// <param name="msg"></param>
            /// <param name="ex"></param>
            public void Error(string msg = "出现异常", Exception ex = null)
            {
                loger.Error(msg, ex);
            }
    
            /// <summary>
            /// Log4日志
            /// </summary>
            /// <param name="msg"></param>
            public void Warn(string msg)
            {
                loger.Warn(msg);
            }
    
            /// <summary>
            /// Log4日志
            /// </summary>
            /// <param name="msg"></param>
            public void Info(string msg)
            {
                loger.Info(msg);
            }
    
            /// <summary>
            /// Log4日志
            /// </summary>
            /// <param name="msg"></param>
            public void Debug(string msg)
            {
                loger.Debug(msg);
            }
        }

        5.测试如下:

     class Program
        {
            private static Logger logger = new Logger(typeof(Program));
            static void Main(string[] args)
            {
                try
                {
                    int x = 1, y = 0;
                    int result = x / y;
                }
                catch (Exception ex)
                {
                    logger.Error("程序发生异常", ex);
                }
                Console.ReadKey();
            }
        }
  • 相关阅读:
    hdu 14004
    hdu 1850 基础尼姆博奕
    hdu 1847 sg函数
    hdu 2177
    hdu 1527
    hdu 2897
    hdu 2516 取石子游戏
    hdu 1525 Euclid's Game
    hdu 2063
    hdu 1281 棋盘游戏
  • 原文地址:https://www.cnblogs.com/marshhu/p/6816148.html
Copyright © 2011-2022 走看看