Log4j---文件解析以及语法使用
Log4j------是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等。
我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,Log4j不仅能把内容输出到控制台,还能把内容输出到文件,我们能够更加细致地控制日志的生成过程。
这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。Log4j支持两种配置文件格式:一种是XML格式的文件。 一种是properties属性文件。
组件--------Lo4g中日志级别:off( 最高级别 ) > fatal ( 致命错误 ) > error ( 错误 ) > warn ( 警告 ) > info ( 普通信息 ) > debug( 调试信息 ) > all ( 最低等级 )
A:off 最高等级,用于关闭所有日志记录。
B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:warm 表明会出现潜在的错误情形。
E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G:all 最低等级,用于打开所有日志记录。
注意:每个日志文件都被设置了日志级别,该日志文件只能记录大于等于该级别的信息,一般常用的有四种。
### 记录日志输出级别 >Debug ###
log4j.appender.D.Threshold = DEBUG
组件-------Lo4g中Log4j.Appender. 目的地 -- 配置日志信息输出目的地
ConsoleAppender------(控制台),
FileAppender------------(文件)
DailyRollingFileAppender-----(每天产生一个日志文件)。
ollingFileAppender-----(文件大小到达指定尺寸的时候产生一个新的文件)
WriterAppender---------(将日志信息以流格式发送到任意指定的地方)
(1)ConsoleAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target=System.err:默认值是System.out。
(2)FileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
(3)DailyRollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定当前消息输出到logging.log4j文件中。
DatePattern='.'yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为 logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。
另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:
1)'.'yyyy-MM:每月
2)'.'yyyy-ww:每周
3)'.'yyyy-MM-dd:每天
4)'.'yyyy-MM-dd-a:每天两次
5)'.'yyyy-MM-dd-HH:每小时
6)'.'yyyy-MM-dd-HH-mm:每分钟
(4)RollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
MaxFileSize=100KB:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到 logging.log4j.1文件中。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1, logging.log4j.2两个滚动文件和一个logging.log4j文件。
### 日志信息的输出目的地--控制台-- 定义输出端名为 Console ###
log4j.appender.Console = org.apache.log4j.ConsoleAppender
### 日志信息的目的地---每天一个文件-- 定义输出端名为 D ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
组件-------配置日志信息的格式(布局):Log4j.Appender .命名方式. 布局方式
LocationInfo=true:输出java文件名称和行号,默认值是false。
Title=My Logging: 默认值是Log4J Log Messages。
(2)PatternLayout选项:
ConversionPattern=%m%n:设定以怎样的格式显示消息。
### 记录日志信息的格式 ###
log4j.appender.D.layout = org.apache.log4j.PatternLayout
### 日志信息的输出格式 ###
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
-----在log4j.properties配置文件中第一行代码为:
log4j.rootLogger = debug,Console,D,E
解析:rootLogger 表示为 根记录器 ,只能有一个。通过Logger.getRootLogger()函数,一般要有参数为测试类的对象,取得根记录器对象。
loggerName 表示 非根记录器,而非根记录器能有多个。通过Logger.getLogger()函数,取得非根记录器对象
这里根记录器的第一个参数为输出优先级别,通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关,只有等于及高于这个级别日志的才进行处理。
### 配置根Logger--定义为日志记录的优先级---输出端 ###
### 通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关,只有等于及高于这个级别的才进行处理 ###
log4j.rootLogger = debug,Console,D ### 输出信息到控制抬 ###
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出信息到E://logs/log.log ### ### 设置日志信息的输出方式 命名为 D --文件输出--每天产生一个 ###
log4j.appender.D = org.apache.log4j.FileAppender
### 设置日志文件生产地点 ###
log4j.appender.D.File = E:/logs//log.log
### 是否追加信息 false--清空 ###
log4j.appender.D.Append = true
### 记录日志输出级别 >Debug ###
log4j.appender.D.Threshold = DEBUG
### 记录日志的表达式输出 ###
log4j.appender.D.layout = org.apache.log4j.PatternLayout
### 日志信息的输出格式 ###
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
//测试文件
package cn.log4j.test;
import org.apache.log4j.Logger;
import org.apache.log4j.chainsaw.Main;
public class Test {
static Logger logger = Logger.getLogger(Test.class);
public static void main(String[] args) {
logger.debug("测试");
logger.warn("警告");
}
}
详细查看一下笔记--学习
参考笔记:https://blog.csdn.net/u013870094/article/details/79518028
https://baike.baidu.com/item/log4j/480673?fr=aladdin
https://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html
https://blog.csdn.net/anlina_1984/article/details/5313023
https://blog.csdn.net/weixin_30470643/article/details/97731126
Log4j---文件解析以及语法使用的更多相关文章
- log4j文件
log4j文件是一种开源日志记录工具,其作用是记录程序运异常行过程中的重要的操作信息和记录可能出现的异常情况便于调试. 根据日志记录的信息内容可分为3类: Sql日志:记录系统执行的SQL语句 异常日 ...
- C语言中.h和.c文件解析(很精彩)
C语言中.h和.c文件解析(很精彩) 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析 ...
- C语言中.h和.c文件解析
整理自C语言中.h和.c文件解析(很精彩) Part.1(林锐<高质量C/C++编程>) 通过头文件来调用库功能.在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的 ...
- 9.XML文件解析
一.XML简介 XML(EXtensible Markup Language),可扩展标记语言 特点:XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用:数据交互 配置应用程序 ...
- 转-C语言中.h和.c文件解析
C语言中.h和.c文件解析(很精彩) 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词 ...
- Dicom格式文件解析器[转]
Dicom格式文件解析器 Dicom全称是医学数字图像与通讯,这里讲的暂不涉及通讯那方面的问题 只讲*.dcm 也就是diocm格式文件的读取,读取本身是没啥难度的 无非就是字节码数据流处理.只不 ...
- javap -- Java 类文件解析器
参考文档 http://blog.chinaunix.net/uid-692788-id-2681132.html http://docs.oracle.com/javase/7/docs/techn ...
- Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
Atitit.Tree文件解析器的原理流程与设计实现 java c# php js 1. 解析原理与流程1 1.1. 判断目录 ,表示服 dirFlagChar = "└├─&quo ...
- linux系统初始化——inittab文件解析
inittab文件解析 inittab配置文件每行的基本格式如下. id:runlevels:action:process 其中某些部分可以为空,下面我们逐一介绍. 1.id 1-2个字符,配置行的唯 ...
随机推荐
- 两个datagrid的数据移动(支持多选)
1.需求 :点击卸车和撤销按钮可以实现 1和2 之间数据的移动(支持多选) 2. 代码 (这里只写一个撤销的功能) //撤销按钮 function moveOut() { var item = $(' ...
- CF1158F Density of subarrays
CF1158F Density of subarrays 首先可以发现,有值的p最大是n/c 对于密度为p,每个数至少出现c次,且其实是每出现c个数,就分成一段,这样贪心就得到了p %ywy n/c ...
- Maven的作用及简介
Maven的作用及简介 一.maven作用 项目之间都是有依赖的,比如A项目依赖于B项目,B项目依赖与C.D项目,等等.这样的依赖链可能很长. 但是,没有一个项目的jar包我们都要导入进去,我们要做的 ...
- 项目接入即时聊天客服系统(环信系统)PHP后端操作
环信工作原理: 一.由于环信没有直接的接口来主动调取本项目中的用户数据,所有用户信息必须在环信服务器上注册对应信息成为环信的用户:(这样才能当用户进入聊天时显示其基本信息,如:名称.昵称.电话.邮箱等 ...
- 微信小程序page的生命周期和音频播放及监听
一.界面的生命周期 /** * 监听页面加载, * 页面加载中 */ onLoad:function(){ var _this = this console.log('index---------on ...
- 02-认识js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 详解 equals() 方法和 hashCode() 方法
创建实体类时,最好重写超类(Object)的hashCode()和equals()方法 equals()方法: 通过该实现可以看出,Object类的实现采用了区分度最高的算法,即只要两个对象不是同一个 ...
- Luogu P3209 [HNOI2010]平面图判定(2-SAT)
P3209 [HNOI2010]平面图判定 题意 题目描述 若能将无向图\(G=(V,E)\)画在平面上使得任意两条无重合顶点的边不相交,则称\(G\)是平面图.判定一个图是否为平面图的问题是图论中的 ...
- ES5-ES8 数组拥有的方法
1.判断是否是数组 Array.isArray( arg ) 有兼容性 2.toString 数组转字符串 arr.toString(); 3.join 数组每一项间的拼接 arr.join(); S ...
- Spring注解驱动开发(二)-----生命周期、属性赋值
bean的生命周期 bean的生命周期:bean创建---初始化----销毁的过程容器管理bean的生命周期:我们可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的初 ...