Log4net 封装用法

      在这之前也使用过log4net,但使用起来总感觉不是很舒服,一不留神配置就写错了,配置一个新的日志花很多时间调试,win版和web版还有一些区别,经过公司大神(凯哥)帮助,直接使用封装好的类,简单粗暴,美!

      上代码,一切都安静了。。。。

using System;
using System.Xml;

namespace WinLog4net
{
    public class Log4netHelper
    {       
        static Log4netHelper()
        {
            Init();
        }
        public static void Init()
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + @"\log4netConfig.xml";
            XmlDocument xmlDoc = new XmlDocument();

            if (System.IO.File.Exists(path))
            {
                xmlDoc.Load(path);
            }
            else
            {
                #region create XML
                string[] arr = new string[] { "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",
                "<log4net>",
                "  <appender name=\"TastInfo\" type=\"log4net.Appender.RollingFileAppender\">",
                "    <file value=\"log4net\\\" />",
                "    <appendToFile value=\"true\" />",
                "    <rollingStyle value=\"Composite\" />",
                "    <maxSizeRollBackups value=\"-1\" />",
                "    <maximumFileSize value=\"1MB\" />",
                "    <staticLogFileName value=\"false\" />",
                "    <DatePattern value=\"yyyy-MM-dd&quot;.txt&quot;\"/>",
                "    <layout type=\"log4net.Layout.PatternLayout\">",
                "      <conversionPattern value=\"%n==========%n【日志级别】%-5level%n【记录时间】%date%n【线程编号】[%thread]%n【执行时间】[%r]毫秒%n【执行行号】%l%n【描述】%message%newline\" />",
                "    </layout>",
                "    <filter type=\"log4net.Filter.LevelRangeFilter\">",
                "      <param name=\"LevelMin\" value=\"INFO\" />",
                "      <param name=\"LevelMax\" value=\"INFO\" />",
                "    </filter>",
                "  </appender>",
                "  <logger name=\"InfoLogger\">",
                "    <level value=\"ALL\"/>",
                "    <appender-ref ref=\"TastInfo\" />",
                "  </logger>",
                "</log4net>"};
                #endregion
                xmlDoc.LoadXml(string.Join<string>(string.Empty, arr));
                xmlDoc.Save(path);
            }

            log4net.Config.XmlConfigurator.Configure(xmlDoc.DocumentElement);

        }
        public static void Info(string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("InfoLogger");
            if (log.IsInfoEnabled) log.Info(message);
        }
        
    }
}

 2017.12.5 修改

原来封装在一个类的方法有个小问题,不能得到正确的方法名、函数及正解的代码行数,所以分开使用.效果会更好.
 1 using System;
 2 using System.Xml;
 3 
 4 namespace WebLog4net
 5 {
 6     /// <summary>
 7     /// 原来封装在一个类的方法有个小问题,不能得到正确的方法名、函数及正解的代码行数,所以分开使用.
 8     /// 使用方法:
 9     /// 1.在系统初始化时调用一次:     Log4netHelper.Init();
10     /// 2.在需要使用的声明:           log4net.ILog log = log4net.LogManager.GetLogger("InfoLogger");
11     /// 3.需要写日志的地方调用,4种级别按需调用:
12     ///       log.Info("This is Info messages");
13     ///       log.Error("This is Error messages");
14     ///       log.Warn("This is Warn messages");
15     ///       log.Debug("This is Debug messages");
16     /// </summary>
17     public class Log4netHelper
18     {
19         //static Log4netHelper()
20         //{
21         //    //Init();
22         //}
23         /// <summary>
24         /// 系统初始化时调用一次
25         /// </summary>
26         public static void Init()
27         {
28             string path = AppDomain.CurrentDomain.BaseDirectory + @"\log4netConfig.xml";
29             XmlDocument xmlDoc = new XmlDocument();
30 
31             if (System.IO.File.Exists(path))
32             {
33                 xmlDoc.Load(path);
34             }
35             else
36             {
37                 #region create XML
38                 string[] arr = new string[] { "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",
39                 "<log4net>",
40                 "  <appender name=\"TastInfo\" type=\"log4net.Appender.RollingFileAppender\">",
41                 "    <file value=\"log4net\\\" />",
42                 "    <appendToFile value=\"true\" />",
43                 "    <rollingStyle value=\"Composite\" />",
44                 "    <maxSizeRollBackups value=\"-1\" />",
45                 "    <maximumFileSize value=\"1MB\" />",
46                 "    <staticLogFileName value=\"false\" />",
47                 "    <DatePattern value=\"yyyy-MM-dd&quot;.txt&quot;\"/>",
48                 "    <layout type=\"log4net.Layout.PatternLayout\">",
49                 "      <conversionPattern value=\"%n==========%n[Level]%-5level%n[Data]%date%n[Thread][%thread]%n[Run time][%r]ms%n[Line]%l%n[Message]%message%newline\" />",
50                 "    </layout>",
51                 "  </appender>",
52                 "  <logger name=\"InfoLogger\">",
53                 "    <level value=\"ALL\"/>",
54                 "    <appender-ref ref=\"TastInfo\" />",
55                 "  </logger>",
56                 "</log4net>"};
57                 #endregion
58                 xmlDoc.LoadXml(string.Join<string>(string.Empty, arr));
59                 xmlDoc.Save(path);
60             }
61             log4net.Config.XmlConfigurator.Configure(xmlDoc.DocumentElement);
62         }
63         //public static void Info(string message)
64         //{
65         //    log4net.ILog log = log4net.LogManager.GetLogger("InfoLogger");
66         //    log.Info(message);
67         //}
68     }
69 }
 1  protected void Page_Load(object sender, EventArgs e)
 2         {
 3             if (!IsPostBack)
 4             {
 5                 Log4netHelper.Init();
 6             }
 7         }
 8         log4net.ILog log = log4net.LogManager.GetLogger("InfoLogger");
 9         protected void btInfo_Click(object sender, EventArgs e)
10         {
11             log.Info("This is Info messages");
12             log.Error("This is Error messages");
13             log.Warn("This is Warn messages");
14             log.Debug("This is Debug messages");
15         }

此配置会在程序目录生成一个log4netConfig.xml 文件

使用时会生成一个log4net文件夹,日期名称为日志名称.同时可以写出正确的方法名,类,执行的代码行数. webfrom winfrom 通用.

 

转载于:https://www.cnblogs.com/cxd1008/p/6862356.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值