zoukankan      html  css  js  c++  java
  • Log4Net 使用及组合公共类

      好记性不如烂笔头,这次是由衷的感受到了!

      log4net 是一个很好用的日志记录工具,引用入项目中,如何查看项目内部运行情况,如何快速定位异常信息,好的日志记录能帮很大的忙;

      log4net 很好用,快速上手,配置简单,可是 (捂脸)自己配置就是配不上啊!!!!因为不想解读源码,只想快速配置好进行读取记录,哎,难死了。。。。。。

      但是功夫不负有心人,只要功夫深,铁棒磨成针!在自己坚持之下,终于配置完成了,能够生成日志,进行查看了! 不说了,开始记录:

      一、单项目单独使用

       1、 准备 log4net.dll(或者在 Vs  中搜索Nuget 程序包,下载 log4net 管理包)添加引用。

        

        

       2、引用完成之后,项目引用中有显示刚才操作dll

        

         3、添加AssemblyInfo 资源信息;(  [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]  )

         

           4、添加log4net.config文件,右键 ---》编辑文件属性:始终复制(一般.config 文件系统会默认始终复制属性,防止特殊情况,检查处理一下。)    

          

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>
      <log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <!--日志存放位置 ~/..-->
          <file value="log" />
          <!--文件命名方式-->
          <datePattern value="yyyy-MM-dd&quot;.txt&quot;" />
          <!--追加到文本末尾-->
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <maxSizeRollBackups value="20" />
          <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
          <param name="MaxSizeRollBackups" value="30" />
          <layout type="log4net.Layout.PatternLayout">
            <!--%n日志时间:%d [%t] %n日志级别:%-5p %n消息描述:%c [%x] %n%m %n-->      
            <!--%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] 代码位置(%file:%line) %n消息描述:%message%n异常:%exception%n%n-->
            <param name="ConversionPattern" value="%d [%thread] %-5p %message (%file:%line) %n" />
          </layout>
        </appender>
      <!--识别的log4net配置名称--> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> </logger> </log4net> </configuration>

         4、项目使用测试!

           

           

        二、封装log4net 到公用帮助类库中      

          1、在公用帮助类库中,添加 log4net.dll 引用,引用方式同上;

          2、在公用帮助类库中,添加资源引用 AssemblyInfo.cs  添加log4net.config  配置读取信息;方式同上添加方式。

          

          3、封装Log4net  帮助类(LoggerHelper.cs) --看需要自己拓展      

    using log4net;
    using System;  
    public class LogerHelper
        {      
            #region
            private static ILog _LoggerInfo;
            private static ILog LogInfo
            {
                get
                {
                    if (_LoggerInfo == null)
                    {                 
                        _LoggerInfo = log4net.LogManager.GetLogger("loginfo");
                    }
                    return _LoggerInfo;
                }
                set
                {
                    value = _LoggerInfo;
                }
            }
            #endregion
    
            public LogerHelper(Type type)
            {
                LogInfo = LogManager.GetLogger(type);
            }
    
            static LogerHelper()
            {
                
            }
    
            public static void SetConfig()
            {
                log4net.Config.XmlConfigurator.Configure();
            }
    
            public static void SetConfig(FileInfo configFile)
            {
                log4net.Config.XmlConfigurator.Configure(configFile);
            }
    
            /// <summary>
            /// Log4日志Error
            /// </summary>
            /// <param name="msg"></param>
            /// <param name="ex"></param>
            public static void Error(Exception ex = null)
            {
                Error("出现异常!", ex);
            }
    
            /// <summary>
            /// Log4日志
            /// </summary>
            /// <param name="msg"></param>
            /// <param name="ex"></param>
            public static void Error(string msg = "出现异常", Exception ex = null)
            {
                try
                {
                    if (LogInfo.IsErrorEnabled)
                    {
                        LogInfo.Error(msg, ex);
                    }
                }
                catch { }
            }
    
            /// <summary>
            /// Log4日志Warn
            /// </summary>
            /// <param name="msg"></param>
            public static void Warn(string msg)
            {
                //Console.WriteLine(msg);
                LogInfo.Warn(msg);
            }
    
            /// <summary>
            /// Log4日志Info
            /// </summary>
            /// <param name="msg"></param>
            public static void Info(string msg)
            {
                //Console.WriteLine(msg);
                LogInfo.Info(msg);
            }
    
            /// <summary>
            /// Log4日志Debug
            /// </summary>
            /// <param name="msg"></param>
            public static void Debug(string msg)
            {
                //Console.WriteLine(msg);
                LogInfo.Debug(msg);
            }
        }

          4、工具类封装loghelper 后,在输出/展示应用程序中,需要添加 log4net.config  文件,如果不添加,将不会记录日志:

           比如我要在 console 控制台应用程序中使用日志,使用log4net 记录输出日志时,需要在console 应用程序中添加 log4net.config 文件。

          

           

           5、日志样例:

          

        三、总结

        1、引用log4net.dll 后,看在哪使用,如果单独使用,在当前应用程序的资源文件AssemblyInfo.cs 中添加 ;

          (如果你有公用的工具类库,放置封装log4net 的Helper信息时,在log4netHelper  所在应用程序资源文件AssemblyInfo.cs 中添加 ),

          [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

        2、在最终的输出应用程序中添加 log4net.config,设置文件属性为始终复制;

        3、log4net.config  中内容记录展示样式:(log4net.Layout.PatternLayout --》ConversionPattern 配置)

    %m[%message] : 输出的日志消息
    %n : 换行
    %d[%datetime] : 输出当前语句运行的时刻
    %r : 输出程序从运行到执行到当前语句时消耗的毫秒数
    %d : 当前语句所在的线程ID
    %p : 日志的当前优先级别
    %c :当前日志对象的名称
    %L : 输出语句所在的行号
    %F :输出语句所在的文件名
    %-数字 :表示该项的最小长度,如果不够,则用空格填充

       本文log4net.config  文件满足一般需要,想配置更多,功能更全,建议了解一下log4net.Config 节点参数。

       配置到类库中进行调用参考:http://grim1980.blog.sohu.com/255519333.html

       配置文件log4net.config  配置内容解说:https://www.cnblogs.com/kissazi2/p/3392605.html

       如有不合理之处,请大家多多指教。

       如果您觉得本文对您有帮助,欢迎点击“收藏”按钮!(/:微笑)欢迎转载,转载请注明出处。

  • 相关阅读:
    自动控制中的泛函分析(一)
    自动控制中的泛函分析(一)
    Andrew Ng机器学习课程15
    Andrew Ng机器学习课程14(补)
    Andrew Ng机器学习课程14(补)
    关于PADS的一些概念和实用技巧(一)
    关于PADS的一些概念和实用技巧(一)
    Andrew Ng机器学习课程14
    Andrew Ng机器学习课程14
    《数学之美》之计算复杂度
  • 原文地址:https://www.cnblogs.com/skyheaving/p/12294241.html
Copyright © 2011-2022 走看看