Apache开源日志框架Log4j配置指南
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最方便的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。本篇指南主要介绍Log4j 1.x版本的配置与使用Log4j最新版下载地址:http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip
一、在Eclipse中配置Log4j
1.1、新建Java工程,导入包log4j-1.2.17.jar,工程如下图:
1.2、在src下创建log4j.propertiese配置文件,复制并粘贴以下内容到文件中:
###
根
logger
主要定义
log4j
支持的日志级别及输出目的地
###
log4j
.rootLogger
=debug
,stdout
,file
###
配置控制台输出及输出格式
###
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
=[%-5p
]%
d
{yyyy
-MM
-dd HH
:mm
:ss
,SSS
}method
:%l
%n
%m
%n
###
输出
DEBUG
级别以上的日志到工程根目录下的
logs
/log
.log
文件,可以自行修改为绝对路径
###
log4j
.appender
.file
=org
.apache
.log4j
.FileAppender
log4j
.appender
.file
.File
=logs
/log
.log
log4j
.appender
.file
.Append
=true
log4j
.appender
.file
.Threshold
=DEBUG
log4j
.appender
.file
.layout
=org
.apache
.log4j
.PatternLayout
log4j
.appender
.file
.layout
.ConversionPattern
=%-d
{yyyy
-MM
-dd HH
:mm
:ss
}[
%
t
:%r
]-
[
%
p
]%
m
%n
注意:粘贴到Eclipse中后,有些小伙伴会呈现“乱码”:\u6839,这是Unicode编码,并不影响程序的执行。
1.3、在Java类中书写代码
packagecom
.xuetang9
.kenny
;
importorg
.apache
.log4j
.Logger
;
/**
* 使用Log4j打印日志信息<br/>
* @author Kenny
* @version 1.0
* @date 2018年1月8日 下午9:41:13
* @copyright 老九学堂
*/
publicclass
LoggerTest
{
private
static
Logger logger
=Logger
.getLogger(LoggerTest
.class);
public
static
void
main(
String
[]args
){
//日志记录的行为是分等级的,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。
//Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
logger
.debug("记录debug级别信息");
logger
.info("记录info级别信息");
logger
.warn("记录warn级别信息");
}
}
1.4、输出结果:
控制台:
logs/log.log文件中:
二、Log4j的基本使用方法
Log4j是高度可配置的,并可通过在运行时的外部文件配置。它根据记录的优先级别,并提供机制,以指示记录信息到许多的目的地,诸如:数据库,文件,控制台,UNIX系统日志等。
Log4j中有三个主要组成部分:
– loggers: 负责捕获记录信息。
– appenders : 负责发布日志信息,以不同的首选目的地。
– layouts: 负责格式化不同风格的日志信息。
2.1、配置文件的定义
log4j也可以通过配置文件的方式进行设置,目前支持两种格式的配置文件:xml文件和properties文件(推荐)。
1、配置根Logger,语法为:
log4j
.rootLogger
=[level
],appenderName1
,appenderName2
,....
level表示日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别(E、F、G等)。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,我们可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName就是指日志信息输出到哪个地方。可以同时指定多个输出目的地。
2、配置日志信息输出目的地(Appender),语法如下:
log4j
.appender
.appenderName
=fully
.qualified
.name
.of
.appender
.class
log4j.appender.appenderName.option1=value1
...............
log4j
.appender
.appenderName
.option
=valueN
其中,log4j提供的appender有以下几种,根据项目需要使用即可:
org
.apache
.log4j
.ConsoleAppender
输出到控制台
org
.apache
.log4j
.FileAppender
输出到文件
org
.apache
.log4j
.DailyRollingFileAppender
每天产生一个日志文件
org
.apache
.log4j
.RollingFileAppender
文件大小到达指定尺寸的时候产生一个新的文件
org
.apache
.log4j
.WriterAppender
将日志信息以流格式发送到任意指定的地方
3、配置日志信息输出的格式(布局),语法如下:
log4j
.appender
.appenderName
.layout
=fully
.qualified
.name
.of
.layout
.class
log4j.appender.appenderName.layout.option1=value1
..............
log4j
.appender
.appenderName
.layout
.option
=valueN
Log4j提供的格式layout有以下几种:
org
.apache
.log4j
.HTMLLayout
以
HTML
表格形式布局
org
.apache
.log4j
.PatternLayout
可以灵活地指定布局模式(常用)
org
.apache
.log4j
.SimpleLayout
包含日志信息的级别和信息字符串
org
.apache
.log4j
.TTCCLayout
包含日志产生的时间、线程、类别等等信息
Log4j采用类似C语言的printf函数格式化日志信息,打印参数如下:
%p
输出优先级,即
DEBUG
,
INFO
,
WARN
,
ERROR
,
FATAL
%r
输出自应用启动到输出该
log
信息耗费的毫秒数
%c
输出所属的类目,通常就是所在类的全名
%t
输出产生该日志事件的线程名
%n
输出一个回车换行符,
Windows
平台为
“rn”
,
Unix
平台为
“n”
%d
输出日志时间点的日期或时间,默认格式为
ISO8601
,也可以在其后指定格式,比如:
%d
{yyy MMM dd HH
:mm
:ss
,SSS
},输出类似:
2018年
12月
31日
23
:
59:
59,
123
%l
输出日志事件的发生位置,包括类名、发生的线程,以及在代码中的行数。如:
LoggerTest
.main(LoggerTest
.java
:18)
4、日志级别
每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:
A:off 最高等级,用于关闭所有日志记录。
B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:warm 表明会出现潜在的错误情形。
E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G:all 最低等级,用于打开所有日志记录。
上面这些级别是定义在org.apache.log4j.Level类中。Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。通过使用日志级别,可以控制应用程序中相应级别日志信息的输出。例如,如果使用b了info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来。
更多干货笔记关注微信公众号 : 老九学堂
原文地址:https://www.cnblogs.com/ljxt/p/11613038.html
- 分布式监控系统Zabbix--使用Grafana进行图形展示
- Silverlight在线创建PDF(支持中文)
- Flash/Flex学习笔记(3):动态添加组件
- Flash/Flex学习笔记(1):Hello World!
- 数据库常规操作
- 不伦不类的Action Script 3.0
- Asp.Net Mvc中的一些初级问题整理
- Pandas Series笔记
- Asp.Net4.0/VS2010新变化(6):内置的图表控件
- Asp.Net4.0/VS2010新变化(5):可扩展的(分布式)缓存
- Pandas对行情数据的预处理
- 上市公司*ST华泽官网打不开,域名已被挂出售卖
- Asp.Net4.0/VS2010新变化(4):SEO的改进
- Pandas DataFrame笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AWVS acunetix_WVS13的基础使用
- 为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?
- docker安装伏羲扫描器fuxi-scanner
- 基于深度学习的文本分类应用!
- 表驱动法
- mysql将表结构导出excel
- 为什么会是Docker?
- 浅析http报文
- MySQL explain 中的 rows 究竟是如何计算的?
- SwiftUI: 使用 Touch ID 和 Face I
- Linux 系统中查找正在运行的进程的完整命令、当前工作目录等信息的方法
- Go by Example 中文:通道方向
- mycat数据库集群系列之mysql主从同步设置
- Tun/Tap接口使用指导
- Swift中? 、! 和 ??