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个字符,配置行的唯 ...
随机推荐
- js '' ""的嵌套使用
1.我需要拼接一个字符串,但是其中 单引号内包含了双引号,双引号内又包含了单引号变量 这时我们想到了可以用到HTML特殊转义字符 2.如下拼接 return '<input type=" ...
- Extjs4 desktop 图标自动换行,横纵排列 图标大小修改
一.图标换行 /*! * Ext JS Library 4.0 * Copyright(c) 2006-2011 Sencha Inc. * licensing@sencha.com * http:/ ...
- 深入浅出 Java Concurrency (30): 线程池 part 3 Executor 生命周期[转]
我们知道线程是有多种执行状态的,同样管理线程的线程池也有多种状态.JVM会在所有线程(非后台daemon线程)全部终止后才退出,为了节省资源和有效释放资源关闭一个线程池就显得很重要.有时候无法正确的关 ...
- 《DSP using MATLAB》Problem 8.19
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- java基础之Calender类
Calendar: Calendar类概述 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并 ...
- Python学习day26-面向对象之小结
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- UVA--624 CD(01背包+路径输出)
题目http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- API 练习 第一篇
练习API CreateSemaphoreCreateEvent ReleaseSemapWaitForSingleObject CloseHandleInitializeCriticalSec ...
- mac上安装软件后,桌面上软件的图标如何去掉?
桌面上的图标是软件的镜像包,默认安装以镜像形式,你选中它,按command+e 就可以推掉它
- JS播放视频代码
<div class="col-md-8"> <div id="moviecontainer"></div> </di ...