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 ...
随机推荐
- Codeforces Round #364 (Div.2) C:They Are Everywhere(双指针/尺取法)
题目链接: http://codeforces.com/contest/701/problem/C 题意: 给出一个长度为n的字符串,要我们找出最小的子字符串包含所有的不同字符. 分析: 1.尺取法, ...
- 详解 jupyter notebook 集成 spark 环境安装
来自: 代码大湿 代码大湿 1 相关介绍 jupyter notebook是一个Web应用程序,允许你创建和分享,包含活的代码,方程的文件,可视化和解释性文字.用途包括:数据的清洗和转换.数值模拟.统 ...
- Ineligible Devices 不被识别的设备
设备不可用,出现Ineligible Devices,如下图: 此错误因为 Xcode的Deployment Target 大于设备的,选择和设备一样活着低于设备的.如下图:
- 对"一维最大子数组和"问题的思考(homework-01)
一维最大子数组和问题,即给定一个数组,在它所有的连续子数组的和中,求最大的那个和.“最大子数组和”是一个很好的IT面试考题,在<编程之美>一书中同时阐述了一维数组和二维数组的讨论.本篇博客 ...
- 报表服务框架:WEB前端UI
1.Highcharts 2.ECharts 3.ichartjs 参考: http://v1.hcharts.cn/index.php http://echarts.baidu.com/ http: ...
- Java设计模式系列之状态模式
状态模式(State)的定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它 ...
- 采用现代Objective-C
多年来,Objective-C语言已经有了革命性的发展.虽然核心理念和实践保持不变,但语言中的部分内容经历了重大的变化和改进.现代化的Objective-C在类型安全.内存管理.性能.和其他方面都得到 ...
- [iOS基础控件 - 6.11.2] - UINavigationController 多控制器 简单使用
A.概念 1.通常一个app有多个控制器 2.需要对这些控制器进行管理 3.有多个view的时候,用一个父view去管理多个子view 4.控制器管理也是如此,使用给一个父控制器,去控制子控制器 ...
- json网页预览插件
- 模拟学信网登录,Cookie 序列化,在反序列化之后不能用的问题
昨天和今天在模拟学信网登录,然后抓取用户的信息数据的时候发现一直登录不成功, 登录页面,https://account.chsi.com.cn/passport/login?service=http% ...