文档章节

Log4j简单配置

勤奋的蚂蚁
 勤奋的蚂蚁
发布于 2017/04/20 20:07
字数 800
阅读 3
收藏 0

日常用的日志配置

转自http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

#配置根Logger
log4j.rootLogger 
=   [ level ]   ,  appenderName1 ,  appenderName2 ,  …
#配置日志信息输出目的地Appender
log4j.appender.appenderName 
=  fully.qualified.name.of.appender.class 
log4j.appender.appenderName.option1 
=  value1 
… 
log4j.appender.appenderName.optionN 
=  valueN 
#配置日志信息的格式(布局)
log4j.appender.appenderName.layout 
=  fully.qualified.name.of.layout.class 
log4j.appender.appenderName.layout.option1 
=  value1 
… 
log4j.appender.appenderName.layout.optionN 
=  valueN 

下边一一讲解其中参数

level级别共有5级,分别是

FATAL  0

ERROR 3

WARN 4

INFO   6

DEBUG 7

Appender 为日志输出目的地,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

Layout:日志输出格式,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平台为“\r\n”,Unix平台为“\n”

%d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日  22 10 28 921 

%l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10

2. 在代码中初始化Logger:
1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG.
2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;
3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

=========================================================

例子:

### set log levels ###
log4j.rootLogger
 = debug ,  stdout ,  D ,  E

### 输出到控制台 ###
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 %c{ 1 }:%L - %m%n

### 输出到日志文件 ###
log4j.appender.D
 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
 = logs/log.log
log4j.appender.D.Append
 = true
log4j.appender.D.Threshold
 = DEBUG ## 输出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
 

### 保存异常信息到单独文件 ###
log4j.appender.D
 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
 = logs/error.log ## 异常日志文件名
log4j.appender.D.Append
 = true
log4j.appender.D.Threshold
 = ERROR ## 只输出ERROR级别以上的日志!!!
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

代码例子(现在大多项目用Spring,直接通过配置文件加载,PropertyPlaceholderConfigurer)

public   class  TestLog4j  {
 public   static   void  main(String[] args)  {
 PropertyConfigurator.configure(
" D:/Code/conf/log4j.properties " );
 Logger logger 
=  Logger.getLogger(TestLog4j. class );
logger.debug(
" debug " );
 logger.error(
" error " );
 }

}

 

 

本文转载自:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

勤奋的蚂蚁
粉丝 7
博文 51
码字总数 13737
作品 0
海淀
私信 提问
Log4j 2.0 的新特性

不久之前,著名的日志框架log4j发布了一个新的主要版本。从第一个alpha版本诞生以来,log4j已经发布了4个版本。log4j 2较之前的log4j 1有了很大的改动。因此,虽然log4j 2s现在还很年轻,但它...

oschina
2012/12/07
20.7K
2
JMX学习以及在log4j中的应用

前言 JMX即Java Managemen Extensions,是一个为应用程序植入管理功能的框架。一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。 常常在编程的过程中...

buglife
2015/01/06
0
15
log4j:WARN Please initialize the log4j system p...

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext). log4j:WARN Please initialize the log4j system properly. S......

进击的方便面
2013/09/26
0
0
Log4j 日志配置示例详解

日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录,具体请参考Log4j文档指南。 Log4j下载 在apache网站,可以免费下载到Log4j最新版本的...

长平狐
2013/01/06
96
0
三方库--slf4j-log4j的使用

本文不去探究日志门面 slf4j 与其他众多日志框架 log4j、log4j2、logback、j.u.l(java.util.logging) 之间的关系,我们将重点关注 slf4j 与 log4j 的组合使用。 log4j 应该是最经典、使用人数...

_inkrain
04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

责任链模式

//这篇博客的博主真的不错,解析的都很清晰明了, https://blog.csdn.net/jason0539/article/details/45091639

南桥北木
31分钟前
2
0
Flutter -------- dio网络请求

dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等... 1.添加依赖# dependencies: dio: 2.1.x #...

切切歆语
41分钟前
1
0
PHP的学习

PHP变量的命名必须以$符开始,如: $i;$j;$name; $符后面的第一个字符不可以是数字,只能是字母或者下划线(_)。 除了下划线(_)之外,变量中不能出现任何特殊字符,也就是变量只能包含...

墨冥
今天
2
0
一篇文章彻底搞懂Java虚拟机

概念: 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Jav...

骚年锦时
今天
3
0
C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部