码迷,mamicode.com
首页 > Web开发 > 详细

log4net

时间:2017-05-06 13:12:05      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:运行时   exce   rect   blog   deb   etl   ogg   manager   combine   

一、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="%d [%t] %-5p %c - %m%n" />
        <header value="----------------------header-------------------------" />
        <footer value="----------------------footer--------------------------" />
      </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <conversionPattern value="%d [%t] %-5p %c - %m%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();
        }
    }

 

log4net

标签:运行时   exce   rect   blog   deb   etl   ogg   manager   combine   

原文地址:http://www.cnblogs.com/marshhu/p/6816148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!