博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4net.dll配置以及在项目中应用 zt
阅读量:2236 次
发布时间:2019-05-09

本文共 2995 字,大约阅读时间需要 9 分钟。

1 首先在项目中引用log4net.dll,然后项目中添加一个配置文件log4net.config

View Code

2,在项目中的Properties文件夹下的AssemblyInfo.cs中加入一句话

当然,首先要加入using log4net;;然后添加[assembly: XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

WINFORM应用程序

using log4net.Config; ...[assembly: log4net.Config.XmlConfigurator()]//或 [assembly:log4net.Config.DOMConfigurator()]

 WEBFORM程序

[assembly:log4net.Config.DOMConfigurator(ConfigFile="web.config",Watch=true)]

 在Web.Config或App.Config里配置Log4Net

    首先,在<configuration>下添加入以下配置节(必须是第一个子节点,否则报错)

3,开始在需要记录日志的地方开始使用

首先加入using log4net;

然后定义log全局变量:private static readonly ILog Log = LogManager.GetLogger("ApplePush");//名称与配置文件中的名称一致

然后可以再用到的地方使用log,比如

using log4net;...private static readonly ILog logger = LogManager.GetLogger("Log4NetTest.LogTest");//名称与配置文件中的名称一致...logger.Info("记录日志");logger.InfoFormat("推送服务启动.....");logger.Warn("警告信息");logger.Error("错误信息");

 等等log的方法,使用起来非常方便

另一种配置log4net的方法,是在单独的XML文件中配置,这个时候,只要把log4net标记中的内容复制过来就行了,不需要configSections

 

然后,加入log4net配置内容的定义,范例如下:

View Code

<log4net>是log4net配置节的根标记。

<root>标记定义一个根级别的记录者,log4net的记录者采用层级组织的, 两个logger,A的名字叫loggerA,B的名字叫loggerA.B的话,那么B就是A的儿子,B会自动继承A的一些定义,例如LEVEL定 义,appender-ref定义等,root就是总的logger,其余定义的logger都是他的后代,都会继承他的设置,包括ROOT在内的每一个 LOGGER(ROOT也是一个LOGGER,只不过,他是祖先而已,别的方面,跟其他LOGGER一样),都可以定义Level

<level>定义记录的日志级别,级别由高往低依次是: None Fatal ERROR WARN DEBUG INFO ALL

级别的定义要注意,如果你定义DEBUG,那么低于DEBUG级别以下的信息,将不会记入日志,啥意思呢?就是说,就算你在程序里,用 log.info()来写入一个日志信息,可是你在配置中指定level为DEBUG,由于INFO级别低于DEBUG,所以,不会被记入日志.这样的处 理非常灵活

<appender-ref>了,ref是参照的意思

log4net的架构的四个要素: <logger>   <appender>  < layout>   <filter>

  <logger>是负责日志的记录者  

  <appender>提供记录的介质  

  <layout>负责把记入的内容格式化

  <filter>负责把内容进行筛选

可以说,整个过程就是一个日志流水线,每个成员负责其中的一个环节 logger发出记录信息,appender接到信息,根据内部的layout配置对记录信息格式化,根据filter决定此信息是否被过滤掉,最后,将其序列化

 

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

%c(class):当前日志对象的名称,例如:

       模式字符串为:%-10c -%m%n

       代码为:

ILog log=LogManager.GetLogger(“Exam.Log”);

log.Debug(“Hello”);

    则输出为下面的形式:

Exam.Log       - Hello

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,则用空格填充

例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

176 [main] INFO  org.foo.Bar - Located nearest gas station.

转载于:https://www.cnblogs.com/zeroone/p/3606160.html

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>