好记性不如烂笔头,这次是由衷的感受到了!
log4net 是一个很好用的日志记录工具,引用入项目中,如何查看项目内部运行情况,如何快速定位异常信息,好的日志记录能帮很大的忙;
log4net 很好用,快速上手,配置简单,可是 (捂脸)自己配置就是配不上啊!!!!因为不想解读源码,只想快速配置好进行读取记录,哎,难死了。。。。。。
但是功夫不负有心人,只要功夫深,铁棒磨成针!在自己坚持之下,终于配置完成了,能够生成日志,进行查看了! 不说了,开始记录:
一、单项目单独使用
1、 准备 log4net.dll(或者在 Vs 中搜索Nuget 程序包,下载 log4net 管理包)添加引用。
2、引用完成之后,项目引用中有显示刚才操作dll
3、添加AssemblyInfo 资源信息;( [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)] )
4、添加log4net.config文件,右键 ---》编辑文件属性:始终复制(一般.config 文件系统会默认始终复制属性,防止特殊情况,检查处理一下。)
xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> configSections> <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log\" /> <datePattern value="yyyy-MM-dd".txt"" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <staticLogFileName value="false" /> <maxSizeRollBackups value="20" /> <param name="MaxSizeRollBackups" value="30" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%thread] %-5p %message (%file:%line) %n" /> layout> appender>
<logger name="loginfo"> <level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> logger> log4net> configuration>
4、项目使用测试!
二、封装log4net 到公用帮助类库中
1、在公用帮助类库中,添加 log4net.dll 引用,引用方式同上;
2、在公用帮助类库中,添加资源引用 AssemblyInfo.cs 添加log4net.config 配置读取信息;方式同上添加方式。
3、封装Log4net 帮助类(LoggerHelper.cs) --看需要自己拓展
using log4net; using System; public class LogerHelper { #region private static ILog _LoggerInfo; private static ILog LogInfo { get { if (_LoggerInfo == null) { _LoggerInfo = log4net.LogManager.GetLogger("loginfo"); } return _LoggerInfo; } set { value = _LoggerInfo; } } #endregion public LogerHelper(Type type) { LogInfo = LogManager.GetLogger(type); } static LogerHelper() { } public static void SetConfig() { log4net.Config.XmlConfigurator.Configure(); } public static void SetConfig(FileInfo configFile) { log4net.Config.XmlConfigurator.Configure(configFile); } /// <summary> /// Log4日志Error /// summary> /// <param name="msg">param> /// <param name="ex">param> public static void Error(Exception ex = null) { Error("出现异常!", ex); } /// <summary> /// Log4日志 /// summary> /// <param name="msg">param> /// <param name="ex">param> public static void Error(string msg = "出现异常", Exception ex = null) { try { if (LogInfo.IsErrorEnabled) { LogInfo.Error(msg, ex); } } catch { } } /// <summary> /// Log4日志Warn /// summary> /// <param name="msg">param> public static void Warn(string msg) { //Console.WriteLine(msg); LogInfo.Warn(msg); } /// <summary> /// Log4日志Info /// summary> /// <param name="msg">param> public static void Info(string msg) { //Console.WriteLine(msg); LogInfo.Info(msg); } /// <summary> /// Log4日志Debug /// summary> /// <param name="msg">param> public static void Debug(string msg) { //Console.WriteLine(msg); LogInfo.Debug(msg); } }
4、工具类封装loghelper 后,在输出/展示应用程序中,需要添加 log4net.config 文件,如果不添加,将不会记录日志:
比如我要在 console 控制台应用程序中使用日志,使用log4net 记录输出日志时,需要在console 应用程序中添加 log4net.config 文件。
5、日志样例:
三、总结
1、引用log4net.dll 后,看在哪使用,如果单独使用,在当前应用程序的资源文件AssemblyInfo.cs 中添加 ;
(如果你有公用的工具类库,放置封装log4net 的Helper信息时,在log4netHelper 所在应用程序资源文件AssemblyInfo.cs 中添加 ),
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
2、在最终的输出应用程序中添加 log4net.config,设置文件属性为始终复制;
3、log4net.config 中内容记录展示样式:(log4net.Layout.PatternLayout --》ConversionPattern 配置)
%m[%message] : 输出的日志消息
%n : 换行
%d[%datetime] : 输出当前语句运行的时刻
%r : 输出程序从运行到执行到当前语句时消耗的毫秒数
%d : 当前语句所在的线程ID
%p : 日志的当前优先级别
%c :当前日志对象的名称
%L : 输出语句所在的行号
%F :输出语句所在的文件名
%-数字 :表示该项的最小长度,如果不够,则用空格填充
本文log4net.config 文件满足一般需要,想配置更多,功能更全,建议了解一下log4net.Config 节点参数。
配置到类库中进行调用参考:http://grim1980.blog.sohu.com/255519333.html
配置文件log4net.config 配置内容解说:https://www.cnblogs.com/kissazi2/p/3392605.html
如有不合理之处,请大家多多指教。
如果您觉得本文对您有帮助,欢迎点击“收藏”按钮!(/:微笑)欢迎转载,转载请注明出处。