中新网 2 月 1 日电(IT 频道秦辰)按此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,今日起未申请...

最近自己在做一个小东西,用log4net日志组件来记录日志,自己在前人的基础上加工总结,拿出来给大家分享一下,不足之处大拿们使劲拍砖,感激不尽!

第一步:配置config文件

    为了方便管理,把log4net的配置文件从web.config中分离,新建一个名为log4net.config的文件,内容如下:

View Code
  1 "1.0" encoding="UTF-8"?>
  2 "false">
  3 
  4    
  5   "LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
  6 
  7     
  8     "AppendToFile" value="true" />
  9     
 10     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 11     "StaticLogFileName" value="true" />
 12     
 13     "File" value="F:\Log\\" />
 14     "DatePattern" value="yyyy-MM-dd.LOG" />
 15     "StaticLogFileName" value="false" />
 16     "RollingStyle" value="Date" />
 17     "log4net.Layout.PatternLayout">
 18       "ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 19     
 20   
 21   
 22   
 23   "LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >
 24 
 25     
 26     "AppendToFile" value="true" />
 27     
 28     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 29 
 30     "StaticLogFileName" value="true" />
 31 
 32     
 33     "RollingStyle" value="Size" />
 34     "File" value="LogData\\log.txt" />
 35     
 36     "MaximumFileSize" value="10KB"/>
 37     
 38     "MaxSizeRollBackups" value="2" />
 39     
 40     "StaticLogFileName" value="false" /> 
 41     "log4net.Layout.PatternLayout">
 42       "ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 43     
 44     
 45   
 46   "AdoNetAppender" type="log4net.Appender.AdoNetAppender">
 47     "100" />
 48     "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 49     "data source=GAS-HECHEN;initial catalog=dsc141051_db;integrated security=false;persist security info=True;User ID=sa;Password=000000" />
 50     "INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
 51     
 52       "@log_date" />
 53       "DateTime" />
 54       "log4net.Layout.RawTimeStampLayout" />
 55     
 56     
 57       "@thread" />
 58       "String" />
 59       "255" />
 60       "log4net.Layout.PatternLayout">
 61         "%thread" />
 62       
 63     
 64     
 65       "@log_level" />
 66       "String" />
 67       "50" />
 68       "log4net.Layout.PatternLayout">
 69         "%level" />
 70       
 71     
 72     
 73       "@logger" />
 74       "String" />
 75       "255" />
 76       "log4net.Layout.PatternLayout">
 77         "%logger" />
 78       
 79     
 80     
 81       "@message" />
 82       "String" />
 83       "4000" />
 84       "log4net.Layout.PatternLayout">
 85         "%message" />
 86       
 87     
 88     
 89       "@exception" />
 90       "String" />
 91       "2000" />
 92       "log4net.Layout.ExceptionLayout" />
 93     
 94    
 95   
 96     "INFO" />
 97     
 98     ref ref="LogFileAppenderByDate" />
 99     
100     
101     
102     
103   
104 

    内容主要配置日志的输出方式:1、按日期生成  2、按文件大小 生成  3、把日志保存到数据库文件。最后root节点是设置启动哪种方式来保存日志,以及设置日志的级别

第二步:把Log4Net.config文件添加到项目启动项

        在website或winform 项目下的Global.asax.cs类的Application_Start()方法下添加加载日志配置文件代码

View Code
1        void Application_Start(object sender, EventArgs e)
2         {
3             // Code that runs on application startup
4             log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("/Log4Net.config")));
5         }

第三步:在类库里添加日志帮助类LogHelper

        添加辅助类的目的:1、方便各个类库及项目直接调用,不用每个项目里都添加log4net的引用

                                2、为了支持根据自己配置的日志输出格式和输出方式 输出日志(configPath 用来传入日志配置路径)

View Code
 1     /// 
 2 /// 日志辅助类
 3 /// 
 4     public class LogHelper
 5     {
 6         private static ILog log;
 7         private static LogHelper logHelper = null;
 8         /// 
 9 /// 初始化
10 /// 
11 /// 
12         public static ILog GetInstance()
13         {
14             logHelper = new LogHelper(null);
15 
16             return log;
17         }
18         /// 
19 /// 初始化
20 /// 
21 /// 
22 /// 
23         public static ILog GetInstance(string configPath)
24         {
25             logHelper = new LogHelper(configPath);
26 
27             return log;
28         }
29         /// 
30 /// 构造函数
31 /// 
32 /// 
33         private LogHelper(string configPath)
34         {
35             if (!string.IsNullOrEmpty(configPath))
36             {
37                 log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
38                 log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
39             }
40             else
41             {
42                 log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
43             }
44         }
45 
46     }


第四步:在项目里应用日志

           

View Code
ILog log = LogHelper.GetInstance();
log.Fatal("Fatal");

或者

ILog log = LogHelper.GetInstance(configPath);
log.Fatal("diaoxw");

你可能感兴趣的:(中新网 2 月 1 日电(IT 频道秦辰)按此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,今日起未申请...)