C# winform使用log4net步骤
2016-07-19 19:07
344 查看
1.使用工程中引入log4net的dll
2.主工程的app.config中增加log4net配置
具体哪个文件属于哪个级别,通过appener中的filter过滤
3.代码中使用
2.主工程的app.config中增加log4net配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="AdjustMeter.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <system.diagnostics> <sources> <!-- 本部分定义 My.Application.Log 的登录配置--> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- 取消以下部分的注释,以写入应用程序事件日志--> <!--<add name="EventLog"/>--> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> <!-- 取消以下部分的注释,并用应用程序名替换 APPLICATION_NAME,以写入应用程序事件日志--> <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> --> </sharedListeners> </system.diagnostics> <applicationSettings> <AdjustMeter.My.MySettings> <setting name="HL_Meter_WebReference_Service" serializeAs="String"> <value>http://172.16.23.63/webjmj/Service.asmx</value> </setting> </AdjustMeter.My.MySettings> </applicationSettings> <log4net> <root> <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--> <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录--> <!--如果没有定义LEVEL的值,则缺省为DEBUG--> <level value="ALL" /> <appender-ref ref="InfoAppender" /> <appender-ref ref="DebugAppender" /> <appender-ref ref="ErrorAppender" /> </root> <!--定义输出到文件中--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置--> <file value="TermLog\\Info\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%t]%-5p %c - %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置--> <file value="TermLog\\Frames\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%t]Frames %c - %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="DEBUG" /> </filter> </appender> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置--> <file value="TermLog\\Error\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%t]%-5p %c - %n%m%n%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net> </configuration>
具体哪个文件属于哪个级别,通过appener中的filter过滤
3.代码中使用
using System; using System.Collections.Generic; using System.Text; [assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace TermComm { public class LogHelper { public enum LogType { //Debug=0, Error=1, //Fatal=2, Info=3, //Warn=4 } public static void WriteErrorLog(Exception ex, Type t) { WriteLog(LogHelper.LogType.Error, t, "StackTrace:" + System.Environment.NewLine + ex.StackTrace + System.Environment.NewLine + "TargetSite:" + ex.TargetSite + System.Environment.NewLine + "Message:" + ex.Message); } /// <summary> /// 输出日志 /// </summary> /// <param name="logType"></param> /// <param name="t"></param> /// <param name="msg"></param> public static void WriteLog(LogType logType, Type t, string msg) { log4net.ILog log = log4net.LogManager.GetLogger(t); switch (logType) { case LogType.Error: if (CommPara.OutputErr) { log.Error(msg); } break; case LogType.Info: if (CommPara.OutputInfo) { log.Info(msg); } break; default: break; } } /// <summary> /// 记录帧 /// </summary> /// <param name="t"></param> /// <param name="frames"></param> public static void WriteFrame(Type t, byte[] frames) { if (!CommPara.OutputFrame) return; if (frames != null && frames.Length > 0) { log4net.ILog log = log4net.LogManager.GetLogger(t); string strFrames = string.Empty; for (int i = 0; i < frames.Length; i++) { strFrames += frames[i].ToString("X2") + " "; } log.Debug(strFrames); } } } }
相关文章推荐
- C#开发学习笔记:编写自定义Button控件的自定义事件
- 数据采集实践学习二(C#)
- C#对list列表进行随机排序的方法
- C#委托的介绍(delegate、Action、Func、predicate)
- C#压缩解压zip 文件
- C#中的webBrowser控件加载网页时实现进度显示
- C#:文件创建、复制、移动、删除
- Devexpress GridView控制Enter键时向下移动
- devexpress中gridview控件编辑时改变输入法状态
- C# SmtpClient 遇到的两个Exception
- C#生成PDF总结
- C#使用链表结构(intptr)与c语言 dll配合使用。
- C#中的泛型
- C#通过调用WinApi打印PDF文档类,服务器PDF打印、IIS PDF打印
- c# Wndproc的使用方法
- C#语法灵活运用之排列组合算法
- C#异步下载文件
- C# 让程序自动以管理员身份运行
- [C#][.net 4]Task 代码示例
- C# 控件双缓冲控制 ControlStyles 枚举详解