Log4Net(二)之记录日志到文档详解
前面一章、我们简单的介绍了log4net的功能,以及一个记录日志到文档的案例。
本节、将带领大家详细了解上节案例中各行代码的意思。
<configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <log4net> <root> <level value="ALL"/> <appender-ref ref="FileAppender"/> </root> <!--存储到文件的操作--> <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\log.txt"/> <rollingStyle value="Date"/> <param name="AppendToFile" value="true"/> <!--<param name="DatePattern" value="yyyy-MM-dd".txt""/>--> <param name="DatePattern" value="log.txt"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date%n--- ThreadId=[%t] Level=%-5p Message=%m%n"/> </layout> </appender> </log4net> </configuration>
首先是配置log4net.config
<Configuration></Configuration>节点。这是config文件必须切只能包含一个的,用来包含所有的配置内容。
<configSections></configSections>节点。这是用来为配置文件添加自定义节点的。它的内容<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>代表着想这个配置文件添加一个用户自定义节点,节点的名称为log4net类型。IgnoreSectionHandler表示创建的节点类型。这个类型的简单介绍为:创建新的配置处理程序并将指定的配置对象添加到节处理程序集合中
<Root></Root>节点。这个节点是根日志节点,其内容为根日志的配置,有level级别值和Appender的列表。所有的子用户节点(<logger>)都是其后代,上节代码中没有使用<logger>节点。它的内容<level value="ALL"/><appender-ref ref="FileAppender"/>代表着根节点日志记录的日志等级是记录所有等级的日志,<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。
日志的等级分为以下几种:ERROR、WARN、INFO、DEBUG,ALL
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">则声明了你的log4net日志的保存方法等其他信息。上章的代码中日志的保存方法为“写日志到文件”所有appender的type则是RollingFileAppender。
<Param>则是设置appender的属性,如保存的文件名,记录方式等,
<Layout>输出日志的格式化器,用于向用户显示最后经过格式化的输出信息。输出信息可以以多种格式显示
格式名含义
%c输出日志信息所属的类的全名
%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-ddHH:mm:ss},输出类似:2002-10-18-22:10:28
%f输出日志信息所属的类的类名
%l输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m输出代码中指定的信息,如log(message)中的message
%n输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r输出自应用启动到输出该日志信息所耗费的毫秒数
%t输出产生该日志事件的线程名
其次是引入log4net.config文件到你的项目中去
想将你的项目引入到log4net,你的将你刚刚配置的log4net.config文件引入到你的项目中来:
1、在项目中找到AssemblyInfo.cs文件,向文件的最后一行加入代码:
[assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = true)]
2、在项目的Application_Start()函数中加入代码
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("log4net.config")));
最后在你的代码中成功使用log4net记录错误日志
完成以上步骤之后,你就可以在你的代码中声明ILog的变量来记录错误了,
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); log.Error("变量不存在");
记录不同的日志等级可以用不同的函数如:log.Error(“变量不存在”),则会在你的日志文件中生成一个等级为error的错误,同样log.Info()则会生成一个info日志信息log.debug()也是如此。
Log4Net(二)之记录日志到文档详解的更多相关文章
- MYSQL服务器my.cnf配置文档详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
- 【红外DDE算法】数字细节增强算法的缘由与效果(我对FLIR文档详解)
[红外DDE算法]数字细节增强算法的缘由与效果(我对FLIR文档详解) 1. 为什么红外系统中图像大多是14bit(甚至更高)?一个红外系统的性能经常以其探测的范围来区别,以及其对最小等效温差指标.首 ...
- 【PDF】java使用Itext生成pdf文档--详解
[API接口] 一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/ ...
- ABBYY FineReader 15扫描和保存文档详解
通过使用ABBYY FineReader 15 OCR文字识别软件的扫描和保存文档功能,用户可使用扫描仪或数码照相机获得图像文档,然后再转换为各种数字格式文档. 在"新任务窗口"中 ...
- 【命令】man命令帮助文档详解
前言:Linux命令分为内建命令和外部命令:内建命令是shell本身自带的,外部命令是是一个可执行程序 我们在使用命令帮助的时候需要钱哦区分命令是内建命令还是外部命令 一.查看一个命令是内建命令还是外 ...
- PyTorch 中 torch.matmul() 函数的文档详解
官方文档 torch.matmul() 函数几乎可以用于所有矩阵/向量相乘的情况,其乘法规则视参与乘法的两个张量的维度而定. 关于 PyTorch 中的其他乘法函数可以看这篇博文,有助于下面各种乘法的 ...
- Hibernate配置文档详解
Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ...
- elastic search文档详解
在elastic search中文档(document)类似于关系型数据库里的记录(record),类型(type)类似于表(table),索引(index)类似于库(database). 文档一定有 ...
- 前端 HTML文档 详解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- tomcat server获取用户的请求地址
当用户 与 tomcat之间 用 nginx做跳转时, HttpServletRequest 中的 getRemoteHost()方法获取到的只是nginx的地址,而不能拿到用户真正的请求地址 解决方 ...
- 第二百九十三天 how can I 坚持
总感觉怪怪的,换了个领导,好烦,虽然对我没用影响. 其实,还是智商低,不懂人情世故,就像...算了,不说了,只能当自己傻. 最近好冷啊,十年不遇的寒冬. 心情有些压抑. 不玩游戏了,看了集康熙来了.小 ...
- Gym 100507H Pair: normal and paranormal (贪心)
Pair: normal and paranormal 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/H Description ...
- jQuery基础学习6——基本选择器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- windows服务控制类
/// <summary> /// 服务调用控制 /// </summary> public class WinServiceController { /// <summ ...
- Intel® RealSense™ SDK Architecture
In this article, we highlight some of the key changes that you can expect to see in the Intel RealSe ...
- 基础数据结构 之 队列(python实现)
队也是编程开发中常见的一种数据结构.栈和队可用来模拟函数的递归过程.队的特点为先入先出,主要操作包括入队和出队.入队时需判断队是否已满,出队时需判断队是否为空.下面给出一个队的python实现的例子: ...
- iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明
iOS Foundation 框架概述文档:常量.数据类型.框架.函数.公布声明 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业 ...
- Swift学习笔记二
Swift是苹果公司开发的一门新语言,它当然具备面向对象的许多特性,现在开始介绍Swift中类和对象的语法. 对象和类 用"class"加上类名字来创建一个类,属性声明和声明常量或 ...
- JUnit中测试异常抛出的方法
最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考. 在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常.例如,我有一个方法,里面对一个List进行读取 ...