将Log4net应用到MVC
项目中遇到测试困难的地方,用到了log4net来记录程序执行日志,帮助测试。log4net可以到nuget上去下载。
一、在web.config中配置log4net,代码及注释如下:
<!--log4net 配置--> <configSections> <!--name="节点名称" type="类,命名空间"--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <!--定义输出到文件中--> <!--可以定义多种日志输出介质 如:控制台、数据库等--> <!--type="log4net.Appender.FileAppender"是调用了输出到文件所用的类--> <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> <!--输出到E盘的LogFileAppender.txt文件--> <file value="E:\\LogFileAppender.txt"/> <!--true 文件被追加写入--> <!--false 文件被覆盖--> <appendToFile value="true"/> <!--对要输出的记录内容 重新格式化--> <layout type="log4net.Layout.PatternLayout"> <header value="log4netHeader"/> <!--这里的各种符号是 log4net.Layout.PatternLayout的一些转换模式 后面再说--> <conversionPattern value="记录时间:%d 线程ID:[%t] 日志级别:%-5p 出错类:%l property:[%p] - 错误描述:%m%n" /> <footer value="log4netFooter"/> </layout> <!--对内容按日志级别进行过滤--> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value=""/> <levelMax value=""/> </filter> </appender> <!--根标签 定义最低等级的日志操作 条件--> <root> <!--定义日志级别 只有方法的级别高于等于日志级别 日志请求才会被执行 这个后面再说--> <level value="warn"/> <!--要使用的日志输出介质--> <appender-ref ref="LogFileAppender"/> </root> <!--定义一个 指定的log调用对象,操作条件不受root影响--> <!--可以直接通过 LogManager.GetLogger("testlog")调用--> <logger name="testlog"> <level value="warn"/> <appender-ref ref="LogFileAppender"/> </logger> </log4net>
二、在Global.asax下的Application_Start()内添加下面这句代码,相当于初始化Log4net。
log4net.Config.XmlConfigurator.Configure();
三、在项目中使用Log4net。
public class LogNetController : Controller { // // GET: /LogNet/ ILog log=LogManager.GetLogger(typeof(LogNetController)); public ActionResult Index() { log.Warn("log4net写入测试"); return View(); } }
四、log4net相关知识讲解。
1>关于log4net的级别。
在配置文件中我们提到有一个root根节点下定义了一个level,这个就是定义了log4net最底层的写入日志的级别,见下表:
2>log4net的转换模式
在配置文件中格式化输出消息的时候