记录日志是软件开发一个比较重要的模块,最近学习了lognet 记录项目日志的方法,主要用于txt文档记录。
1.下载log4net.dll,引用到项目中
2.新建配置文件log.config
1 <?xml version="1.0"?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"></section> 5 </configSections> 6 <log4net> 7 <!--日志记录目标:定义输出到文件中--> 8 <!--RollingFileAppender文件大小到达指定尺寸的时候产生一个新的文件--> 9 <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 10 <!--定义文件存放位置--> 11 <file value="log\" /> 12 <!--当文件存在时,是否在原文件上追加--> 13 <appendToFile value="true"/> 14 <!--创建新文件的方式Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite--> 15 <rollingStyle value="Date"/> 16 <!--当RollingStyle为Composite或Date,这里设置文件名格式--> 17 <datePattern value="yyyy\yyyyMMdd.txt"/> 18 <!--备份日志数目--> 19 <param name="MaxSizeRollBackups" value="100"/> 20 <!--为true时,需要在file里指定文件名,所有日志都记录在这个文件里--> 21 <staticLogFileName value="false"/> 22 <!--PatternLayout可以灵活地指定布局模式--> 23 <layout type="log4net.Layout.PatternLayout"> 24 <!--每条日志末尾的文字说明--> 25 <!--输出格式--> 26 <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> 27 <conversionPattern value="%newline %n记录时间: %date %n线程ID:[%thread] %n日志级别: %-5level 28 %n出错类:%logger property:[%property{NDC}] - %n错误描述:%message%newline %n"/> 29 </layout> 30 </appender> 31 <!--日志记录对象,指定logger的设置--> 32 <logger name="mylog"> 33 <!--日志记录器可以有多个,如控制台,文件,数据库--> 34 <level value="ALL"/> 35 <!--文件形式记录日志--> 36 <appender-ref ref="RollingLogFileAppender"/> 37 </logger> 38 <!-- 根logger的设置--> 39 <!--<root> 40 <priority value ="debug"/> 41 <appender-ref ref="myConsole"/> 42 <appender-ref ref="myFile"/> 43 </root>--> 44 </log4net> 45 <system.web> 46 <compilation debug="true" targetFramework="4.0" /> 47 </system.web> 48 </configuration>
这是参考了好几篇文章,综合了一下,注释非常详细~~~
3.编写日志记录的公用方法LogHelper.cs
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log.config", Watch = true)] 7 namespace test.WEB.Common 8 { 9 public class LogHelper 10 { 11 /// <summary> 12 /// 构造器 13 /// </summary> 14 static LogHelper() 15 { 16 Init(); 17 } 18 //获取日志记录器 19 private static readonly log4net.ILog logger = log4net.LogManager.GetLogger("mylog"); 20 21 /// <summary> 22 /// 读取配置文件-初始化日志系统,在系统运行开始初始化 23 /// </summary> 24 private static void Init() 25 { 26 log4net.Config.XmlConfigurator.Configure(); 27 } 28 #region Debug、Info、Error 29 /// <summary> 30 /// 输出调试到Log4Net 31 /// </summary> 32 /// <param name="t"></param> 33 /// <param name="msg"></param> 34 public static void WriteDebug(object msg, Exception ex) 35 { 36 if (logger.IsDebugEnabled) 37 logger.Debug(msg, ex); 38 } 39 /// <summary> 40 /// 输出信息到Log4Net 41 /// </summary> 42 /// <param name="t"></param> 43 /// <param name="msg"></param> 44 public static void WriteInfo(object msg) 45 { 46 if (logger.IsInfoEnabled) 47 logger.Info(msg); 48 } 49 /// <summary> 50 /// 输出错误到Log4Net 51 /// </summary> 52 /// <param name="t"></param> 53 /// <param name="ex"></param> 54 public static void WriteError(object msg, Exception ex) 55 { 56 if (logger.IsErrorEnabled) 57 logger.Error(msg, ex); 58 } 59 #endregion 60 } 61 }
日志记录级别主要有6种,我用了基本的三种 Debug、Info、Error,主要用于调试和记录错误bug
4.实际调用日志记录方法,简单举例如下:
string input = TextBox1.Text.Trim();
//字符串转换为int, //null, 格式不正确,溢出时报异常;
try
{
//格式不正确,溢出时报异常;
Convert.ToInt32(input);
Common.LogHelper.WriteInfo("输入:" + input);
}
catch (Exception ex)
{
Common.LogHelper.WriteError("输入:" + input, ex);
}