Log4j 日志组件
官网:https://logging.apache.org/log4j/2.x/
使用 Log4j 的步骤:
第一步 引入 Log4j 的 jar 包
1. 直接下载 log4j-x.x.x.jar 到 classpath 中
2. 使用 maven 配置,在 pom.xml 中增加如下依赖即可
<denpendency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
第二步 配置 Log4j
1. Log4j 可以通过 java 程序动态设置,但每次修改后需要重新编译
2. 通过配置文件的方式进行配置
-- xml 文件
-- properties 文件(推荐使用)Java 特性文件(键=值)
第三步 在需要输出日志的类中加入相关语句
一个 log4j.properties 的例子
### 全局配置 ###
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout ### stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n ### set package ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
Log4j 由三个重要的组件构成:日志信息的优先级、日志信息的输出目的地、日志信息的输出格式。
日志信息的优先级从高到低有:ERROR、WARN、INFO、DEBUG 等,分别用来指定这条日志信息的重要程度
日志信息的输出目的地指定了日志将打印到控制台还是文件中
日志嘻嘻的输出格式指定了日志信息的显示内容
日志信息的优先级
org.apache.logging.log4j.Level 类中指定了以下 8 个日志级别
OFF // most specific, no logging. No events will be logged.
FATAL // most specific, little data. A severe error that will prevent the application from continuing.
ERROR // An error in the application, possibly recoverable.
WARN // An event that might possible lead to a error.
INFO // An event for informational purpose.
DEBUG // A general debugging event
TRACE // least specific, a lot of data. A fine-grained debug message, typically capturing the flow through the applicaiton.
ALL // least specific, all data. All events should be logged.
如果使用了级别 P,则所有级别低于 P 的日志信息都不会被打印出来
最高级别 OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL 最低级别
例如 如果启用 WARN 级别,则 ERROR、FATAL、OFF级别都会开启
配置根 Logger
全局 Logger 主要定义 log4j 支持的日志级别及日式输出目的地,其语法为
log4j.rootLogger = [LEVEL], appenderName, appenderName, ...
LEVEL 是日志记录的级别
appenderName 指定日志信息输出的位置,可以同时指定多个输出的目的地。
配置日志信息输出目的地 Appender,其语法如下
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4jappender.appenderName.option1 = value1
...
log4j.appender.appenderName.optionN = valueN
Log4j 提供的 appender 有以下几种:
org.apache.log4j.ConsoleAppender // 控制台
org.apache.log4j.FileAppender // 文件
org.apache.log4j.DailyRollingFileAppender // 每天产生一个日志文件
org.apache.log4j.RollingFileAppender // 文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender // 将日志信息以格式流发送到任意指定的地方
配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
..
log4j.appender.appenderName.layout.optionN = valueN
Log4j 提供的 layout 有以下几种:
org.apache.log4j.HTMLLayout // 以 HTML 表格的形式布局
org.apache.log4j.PatternLayout // 可以灵活的指定布局模式
org.apache.log4j.SimpleLayout // 包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout // 包含日志产生的时间、线程、类别等信息
Log4j 采用类似于 C 语言中的 printf 函数的打印格式来格式化日志信息,打印参数如下:
%m // 输出代码中指定的消息
%p // 输出优先级,即 DEBUG、INFO、WARN、ERROR、FATAL
%r // 输出自应用启动到输出到该 log 信息耗费的毫秒数
%c // 输出所属的类,通常就是所在类的全限定名
%t // 输出产生该日志事件的线程名
%n // 输出一个回车换行符,Windows 平台为 “rn” Unix 平台为 “n”
%d // 输出日志时间点的日期或时间,默认格式为 ISO8601,也可以在其后指定格式,比如:%d{yyyy MM dd HH:mm:ss, SSS}
%l // 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数,举例:Testlog4.main(TestLog4.java:10)
控制台选项
Threshold=DEBUG // 指定日志消息的输出最低层次
ImmediateFlush=true // 默认值是 true,意味着所有的消息都会被立即输出
Target=System.err // 默认情况下,System.out 指定输出控制台
FileAppender 选项
Threshold=DEBUF // 指定日志消息的输出最低层次。
ImmediateFlush=true // 默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt // 指定消息输出到mylog.txt文件。
Append=false // 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
RollingFilerAppender 选项
Threshold=DEBUG // 指定日志消息的输出最低层次。
ImmediateFlush=true // 默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt // 指定消息输出到mylog.txt文件。
Append=false // 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB // 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2 // 指定可以产生的滚动文件的最大数。
Log4j 日志组件的更多相关文章
- Log4J日志组件
Log4j, log for java, 开源的日志组件! 使用步骤: 1. 下载组件,引入jar文件; log4j-1.2.11.jar 2. 配置 : src/log4j.properties ...
- java日志组件介绍(common-logging,log4j,slf4j,logback )
转自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的一个通用的日志 ...
- java中的日志组件-log4j
1.为什么使用日志组件 Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台.文件.CUI组件.NT的事件记录器:还可以控制每一 ...
- 转:java日志组件介绍(common-logging,log4j,slf4j,logback )
原网址:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging common-logging是 ...
- 【转】java日志组件介绍(common-logging,log4j,slf4j,logback )
common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, comm ...
- Java日志组件2---Log4j(org.apache.log4j.Logger)
如果我们在项目中,需要记录的东西并不多,而且也不需要有太多区分,使用jdk的自带Log完全可以解决问题.但是,在开发的过程中,大多数项目都比较大,为方便找到程序的bug,都是需要系统的记录日志的.这里 ...
- 关于log4j、jul、jcl、slf4j等等日志组件的理解
日志组件: 我们经常在开发项目的时候,需要打印记录项目过程中的一些日志.那我们经常大概会用到 log4j.jul.jcl.slf4j.simple.nop.logback 等等,那我们就详细介绍下这些 ...
- 你的日志组件记录够清晰嘛?--自己开发日志组件 Logger
现在现成的日志组件实在是太多太多,为什么我还需要自己实现呢????? 需求来源于java的log4j, [07-31 16:40:00:557:WARN : com.game.engine.threa ...
- Log4J日志配置详解
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
随机推荐
- lambda函数的特性
lambda表达式可以理解为一种抽象的函数实现方法,这种方式只有最基本的三个步骤:给与参数,表达式实现,返回结果.这种方式非常干净,减少了内存的使用,整个程序少了函数的污染,代码格式也会更为简练.但在 ...
- C#中Button.DialogResult属性
窗体中的某个按钮,如果设置了DialogResult(不是设置为None),当窗体是通过ShowDialog方法显示的时候 则不必设置任何响应函数,单击按钮也可窗体.然后,该窗体的DialogResu ...
- Android SurfaceView及TextureView对比
SurfaceView是什么? 它继承自类View,因此它本质上是一个View.但与普通View不同的是,它有自己的Surface.有自己的Surface,在WMS中有对应的WindowState,在 ...
- 在他机上还原DB2的备份
在服务器获取得到db2的备份文件,拷贝到d盘db2_backup目录下面 在windows下的时间戳标记为时间目录名+文件名.001前面的 "2014022\0001006.001" ...
- access数据库编号转换成统一3位数长度方法,不足3位前面补零
select C_CUN+Format(Val(NZ(C_LB)),"000") from LBM 这条SQL只能在access数据库中执行,因为sql不支持NZ函数,而且c_lb ...
- 查询 SQL_Server 所有表的记录数: for xml path
--我加了 top 10 用的时候可以去掉 declare @select_alltableCount varchar(max)='';with T as (select top 10 'SELECT ...
- 数据访问安全--数据库遮罩及断词 Data Masking & Tokenization
现在大数据时代几乎无隐私,各政府部门各公司都要求实名制(动不动手机认证,身份证号码认证),但又无力确保数据安全,称为乱象. 其实在2011年,我们就接触过数据库遮罩断词产品,一个澳大利亚公司产品. 简 ...
- Ext.NET Grid Group分组使用
- 需要注意的是, 涉及到分页排序, 最好定义GroupDir 方向与分组方式相同. - 譬如工资表按照最新最前分页输出. 如果分组按照默认排序的话, 最就最前. - 界面呈现出2015年, 2016 ...
- [SQL]某数据库中查出包含 字段名 的所有表名
--利用SQL语句来查询字段所在的表 --从某数据库中查出包含 字段名 字段的所有表名 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE ...
- CentOS7 安装kafka集群
1. 环境准备 JDK1.8 ZooKeeper集群(参见本人博文) Scala2.12(如果需要做scala开发的话,安装方法参见本人博文) 本次安装的kafka和zookeeper集群在同一套物理 ...