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>
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 }
--------------------------------------
winform程序需要在Program.cs 添加
log4net.Config.XmlConfigurator.Configure(); log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("~/App.config"));

浙公网安备 33010602011771号