C# 通过log4net记录日志

1.添加log4net 引用

 

 2. 在app.config中添加配置

 1 <configuration>
 2   <configSections>
 3     <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
 4       <section name="AdjustMeter.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 5     </sectionGroup>
 6     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 7   </configSections>
 8   <system.diagnostics>
 9     <sources>
10       <!-- 本部分定义 My.Application.Log 的登录配置-->
11       <source name="DefaultSource" switchName="DefaultSwitch">
12         <listeners>
13           <add name="FileLog"/>
14           <!-- 取消以下部分的注释,以写入应用程序事件日志-->
15           <!--<add name="EventLog"/>-->
16         </listeners>
17       </source>
18     </sources>
19     <switches>
20       <add name="DefaultSwitch" value="Information" />
21     </switches>
22     <sharedListeners>
23       <add name="FileLog"
24            type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
25            initializeData="FileLogWriter"/>
26       <!-- 取消以下部分的注释,并用应用程序名替换 APPLICATION_NAME,以写入应用程序事件日志-->
27       <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
28     </sharedListeners>
29   </system.diagnostics>
30   <!--<applicationSettings>
31     <AdjustMeter.My.MySettings>
32       <setting name="HL_Meter_WebReference_Service" serializeAs="String">
33         <value>http://172.16.23.63/webjmj/Service.asmx</value>
34       </setting>
35     </AdjustMeter.My.MySettings>
36   </applicationSettings>-->
37   <log4net>
38     <root>
39       <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
40       <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
41       <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
42       <level value="ALL" />
43       <appender-ref ref="InfoAppender" />
44       <appender-ref ref="DebugAppender" />
45       <appender-ref ref="ErrorAppender" />
46     </root>
47     <!--定义输出到文件中-->
48     <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
49       <!--定义文件存放位置-->
50       <file value="log\\"/>
51       <appendToFile value="true"/>
52       <rollingStyle value="Date"/>
53       <datePattern value="yyyyMMddIn'.log'"/>
54       <staticLogFileName value="false"/>
55       <param name="MaxSizeRollBackups" value="100"/>
56       <layout type="log4net.Layout.PatternLayout">
57         <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread]  %n类:%logger property: [%property] %n信息描述:%message%newline %n" />
58       </layout>
59       <filter type="log4net.Filter.LevelRangeFilter">
60         <param name="LevelMin" value="INFO" />
61         <param name="LevelMax" value="INFO" />
62       </filter>
63     </appender>
64     <!--<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
65       --><!--定义文件存放位置--><!--
66       <file value="log\\Debug\\"/>
67       <appendToFile value="true"/>
68       <rollingStyle value="Date"/>
69       <datePattern value="yyyyMMdd'.log'"/>
70       <staticLogFileName value="false"/>
71       <param name="MaxSizeRollBackups" value="100"/>
72       <layout type="log4net.Layout.PatternLayout">
73         <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n类:%logger property: [%property] %n信息描述:%message%newline %n" />
74       </layout>
75       <filter type="log4net.Filter.LevelRangeFilter">
76         <param name="LevelMin" value="DEBUG" />
77         <param name="LevelMax" value="DEBUG" />
78       </filter>
79     </appender>-->
80     <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
81       <!--定义文件存放位置-->
82       <file value="log\\"/>
83       <appendToFile value="true"/>
84       <rollingStyle value="Date"/>
85       <datePattern value="yyyyMMddService'.log'"/>
86       <staticLogFileName value="false"/>
87       <param name="MaxSizeRollBackups" value="100"/>
88       <layout type="log4net.Layout.PatternLayout">
89         <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread]  %n类:%logger property: [%property] %n错误描述:%message%newline %n" />
90       </layout>
91       <filter type="log4net.Filter.LevelRangeFilter">
92         <param name="LevelMin" value="ERROR" />
93         <param name="LevelMax" value="ERROR" />
94       </filter>
95     </appender>
96   </log4net>
97 </configuration>
View Code

3.添加类 LogHelper,记录调用方法、行号

 1 private static ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 2 
 3         /// <summary>
 4         /// 记录Winform页面日志
 5         /// </summary>
 6         /// <param name="msg">日志信息</param>
 7         public static void Info(string msg)
 8         {
 9             System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(true);
10             msg =  msg + "\r\n [方法名:"+ st.GetFrame(2).GetMethod().Name + " 行号:" + st.GetFrame(2).GetFileLineNumber().ToString() + "]";
11             log.Info(msg);
12         }
13 
14         /// <summary>
15         /// 记录服务端日志
16         /// </summary>
17         /// <param name="msg">日志信息</param>
18         public static void ServiceLog(string msg)
19         {
20             System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(true);
21             msg = msg + "\r\n [方法名:" + st.GetFrame(2).GetMethod().Name + " 行号:" + st.GetFrame(2).GetFileLineNumber().ToString() + "]";
22             log.Error(msg);
23         }
24 
25         /// <summary>
26         /// 记录调试信息日志
27         /// </summary>
28         /// <param name="msg">日志信息</param>
29         public static void Debug(string msg)
30         {
31             System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(true);
32             msg = msg + "\r\n [方法名:" + st.GetFrame(2).GetMethod().Name + " 行号:" + st.GetFrame(2).GetFileLineNumber().ToString() + "]";
33             log.Debug(msg);
34         }
View Code

 --------------------------------------

winform程序需要在Program.cs 添加

 log4net.Config.XmlConfigurator.Configure(); log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("~/App.config"));

  

posted @ 2019-08-30 08:39  123困兽  阅读(98)  评论(0)    收藏  举报