Log4j1.2配置详解
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志的输出到控制台,或者文件等等。
同时,在各大框架中也主要是使用log4j来进行日志的输出。
下面是log4j1.x版本的详细配置:
在1.x版本的log4j中,只需要一个依赖包:log4j-1.x.x.jar
要使用log4j还需要一个配置文件(log4j.properties),来指定log输出的具体方式。
先来看一个简单的实现。
在这个例子中,没有使用配置文件,仅仅用的是默认的配置。
package com.fuwh.demo; import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger; public class Log4jDemo01 { public static void main(String[] args) {
//初始化logger
Logger log=Logger.getLogger(Log4jDemo01.class);
//加载默认的配置信息
BasicConfigurator.configure();
log.log(Level.ERROR, "这是err log");
log.debug("这是debug log");
log.info("这是info log"); }
}
输出结果:
1 [main] ERROR com.fuwh.demo.Log4jDemo01 - 这是err log
2 [main] DEBUG com.fuwh.demo.Log4jDemo01 - 这是debug log
3 [main] INFO com.fuwh.demo.Log4jDemo01 - 这是info log
如果改用配置文件的话就是这样的
#log4j.properties #set root logger level to DEBUG and its only appender to A1
log4j.rootLogger=DEBUG,A1 #A1 is set to be a ConsoleAppender
log4j.appender.A1=org.apache.log4j.ConsoleAppender #A1 uses PatternLayout
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
package com.fuwh.demo; import org.apache.log4j.Level;
import org.apache.log4j.Logger; public class Log4jDemo01 { public static void main(String[] args) {
//初始化logger
Logger log=Logger.getLogger(Log4jDemo01.class);
log.info("log等级:"+log.getLevel()); log.log(Level.ERROR, "这是err log");
log.debug("这是debug log");
log.info("这是info log");
}
}
输出信息:
0 [main] INFO com.fuwh.demo.Log4jDemo01 - log等级:null
2 [main] ERROR com.fuwh.demo.Log4jDemo01 - 这是err log
2 [main] DEBUG com.fuwh.demo.Log4jDemo01 - 这是debug log
2 [main] INFO com.fuwh.demo.Log4jDemo01 - 这是info log
log4j总共有三个组件:loggers,appenders,layouts。
log4j的配置文件可以是XML文件或者是java的属性文件。
在log4j中的logger是分等级层次的,最顶层的是rootLogger,其他的logger都会继承他。
意思就是说:名字为:com.foo的logger是继承自 名为com的logger,名为com的logger又是继承自rootLogger。
而每一个logger都可以指定输出信息的等级。
等级是在org.apache.log4j.Level类中定义的,共有下面这些:
TRACE:表示细粒度的一些信息
DEBUG:表示调试信息
INFO:表示一般的信息
WARN:表示警告信息
ERROR:表示一般的错误信息
FATAL:表示致命的错误
而且这些等级是有顺序的,顺序为:
DEBUG < INFO < WARN < ERROR < FATAL
当你指定输出等级之后,只有大于或等于这个等级的消息才会被输出。
意思就是说,当你指定输出等级为INFO的时候,INFO和WARN,ERROR,FATAL等等消息会被输出,
但是DEBUG信息不会被输出。
log4j.properties文件的详细配置
配置根Logger
log4j.rootLogger=等级, appenderName , appenderName 。。。
指定rootLogger的输出等级,并且输出到appenderName这个目的地,这个名字可以自己随便取
主要用来在下面配置stdout或者R的其他详细信息的时候用的一个名字。
配置输出目的地Appender
log4j.appender.appenderName=appender class name
用来指定输出的类型,还可以指定以下的输出方式:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过org.apache.log4j.MaxBackupIndex=1设置为保存一个备份文件。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义一个名为stdout的输出目的地,ConsoleAppender为控制台。
配置日志信息的输出格式
Layout用来格式化Appender的输出
log4j.appender.appenderName.layout=layout class name
log4j.appender.appenderName.layout.option1 = value1
在log4j中提供的layout有以下几种:
格式化日志
下面是一个典型的log4j配置:
#log4j.properties #set root logger level to DEBUG and its only appender to A1
log4j.rootLogger=INFO,Console,logFile ##Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n ##logFile
log4j.appender.logFile=org.apache.log4j.RollingFileAppender
log4j.appender.logFile.File=D:\\coding\\log4j.txt
log4j.appender.logFile.MaxFileSize=1KB
log4j.appender.logFile.MaxBackupIndex=3
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n #define log level for special class to overrid rootlogger
#log4j.logger.java.sql.ResultSet=INFO
#log4j.logger.org.apache=INFO
#log4j.logger.java.sql.Connection=DEBUG
#log4j.logger.java.sql.Statement=DEBUG
#log4j.logger.java.sql.PreparedStatement=DEBUG
小技巧:
有时候,可能你希望某个包或者某个类中的log信息不被输出,或者输出更加详细的,或者更加简单的信息,则可以单独配置来覆盖rootLooger的配置,例如:
#log4j.logger.org.apache=INFO
Log4j1.2配置详解的更多相关文章
- Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)
1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...
- JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目
一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...
- Tomcat记录-tomcat常用配置详解和优化方法(转载)
常用配置详解 1 目录结构 /bin:脚本文件目录. /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载). /conf:存放配置文件,最重要的是serv ...
- log4j.properties配置详解与实例
log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...
- tomcat常用配置详解和优化方法
tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...
- spring-搭建-概念-配置详解-属性注入
1 spring介绍 三层架构中spring位置 spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还能帮其 ...
- Log4j配置详解(转)
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- logback 常用配置详解<appender>
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- [转]阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
随机推荐
- [日常] AtCoder Beginner Contest 075 翻车实录
别问我为啥要写一篇ABC的游记... 周日打算CF开黑于是就打算先打打ABC找回手速... 进场秒掉 $A$ 和 $B$ , 小暴力一脸偷税 然后开 $C$ ...woc求桥? 怎么办啊我好像突然忘了 ...
- 作业07-Java GUI编程
1. 本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 关于事件.事件源.事件监听器的总结: 事件:用户在GUI上进行的操作,如鼠标单击.输入文字.关 ...
- 201621123025《Java程序设计》第1周学习总结
201621123025<Jave程序设计>第一周学习总结 1.本章学习总结 对于java这门课程,如果不会编码那么会很难学会如何去使用它,而在大一的一二学期的专业课--C语言和数据结构我 ...
- Django 模版语法
一.简介 模版是纯文本文件.它可以产生任何基于文本的的格式(HTML,XML,CSV等等). 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签. {% extends "base ...
- io多路复用(一)
sever端 1 import socket sk1 = socket.socket() sk1.bind(('127.0.0.1',8001,)) sk1.listen() sk2 = socket ...
- 【iOS】Swift GCD-下
欢迎来到本GCD教程的第二同时也是最终部分! 在第一部分中,你学到了并发,线程以及GCD的工作原理.通过使用dispatch_barrrier和dispatch_sync,你做到了让PhotoMana ...
- 小草手把手教你 LabVIEW 串口仪器控制——初识VISA串口
有些人,学习一样东西时候,喜欢现成的例子.很多人学习一门技术,都喜欢现成的例子开始,比如学单片机的啊,最开始都是修改的例子吧,学语言的也是.最开始都是模仿.这个年头看书上的理论知识太浪费时间了.所以啊 ...
- 在360、UC等浏览器,img不加载原因
问题:图片在360浏览器不被加载,在UC浏览器强制不显示. 前言不多说,直接上图. 360浏览器显示情况: UC浏览器显示情况: 由以上两张截图可以看到,在360浏览器,banner图片处根本没有加载 ...
- python之路--day10-闭包函数
1.命名关键字参数 格式:在*后面的参数都是命名关键字参数 特点: 1.必须被传值 2.约束函数的调用者必须按照key=value的形式传值 3.约束函数的调用者必须用我们指定的key名 def au ...
- svn的使用技巧
就是如果想一个文件在提交的时候不被上传,可以设置忽略这样提交的时候就不会被上传