log4j用法和配置学习笔记
2014-11-24 20:03
435 查看
log4j的主要功能是提供日志输出,当然也提供控制台输出,使用此组件则可以很好地代替开发时需要使用System.out来打印输出的功能,从而避免在生产环境中控制台输出不必要的消息。
log4j下载地址:http://logging.apache.org/log4j/1.2/download.html
如果你需要查看API,地址是:http://logging.apache.org/log4j/1.2/apidocs/index.html
测试代码:
配置文件log4j.properties
运行结果:
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
简而言之,在编写log4j.properties文件时需要指定:
1.根目录
2.输出地(控制台,文件等)
3.输出样式
Log4j的基本语法:
1)配置根目录Logger,其语法为:
log4j.rootLogger=[Level], appdenderNameA, appenderNameB, ...
其中Level是日志记录的有先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL和你自己的级别,Log4j只建议四个级别,分别是ERROR、WARN、INFO、DEBUG,优先级依次降低。优先级用于输出的日志记录的开关,例如定义了INFO级别,那么低级别DEBUG的日志记录就不会输出(在代码中调用了Logger.debug方法的输出信息)。appdenderNameA定义了输出源的名字,由用户自定义,可定义多个输出源。
例子:
2)定义输出源的输出目的地Appender,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class,其中,Log4j提供的appender有:
①org.apache.log4j.ConsoleAppender(控制台)
②org.apache.log4j.FileAppender(文件)
③org.apache.log4j.DailyRollingFileAppender(以日期为界限的日志文件,如名字,一般一天一个)
④org.apache.log4j.RollingFileAppender(以文件大小为界限,达到指定大小就自动重新生成另一个日志文件)
⑤org.apache.log4j.WriterAppender(将日志变成流格式发送到指定的地方)
ConsoleAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
FileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DailyRollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
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: 每分钟
RollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
例子:
ConsoleAppender
上面定义的输出源appender1的输出目的地为控制台ConsoleAppender
FileAppender
多定义了一个File属性
DailyRollingFileAppender
定义每天输出一个log
RollingFileAppender
定义了当大小超过100KB的时候生成新日志文件,最大不超过10个
3)定义输出样式(布局)Layout,其语法为:
log4j.appender.appenderName.layout
= fully.qualified.name.of.layout.class,其中Log4j提供的Layout有:
①org.apache.log4j.HTMLLayout(以hmtl表单格式)
②org.apache.log4j.TTCCLayout(线程,时间,类别等信息)
③org.apache.log4j.SimpleLayout(日志信息级别和信息本身的字符串)
④org.apache.log4j.PatternLayout(灵活的字符串格式,默认只输出信息字符串)
例子
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
上面定义的输出员appender1的输出样式为线程名字,信息级别和信息内容组成。
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%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} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)
例子:
格式字母前带数字是当内容不够时进行左对齐或者右对齐,正数为左对齐,负数为右对齐。还有限制字数如 %c{10}等功能,若有特殊需求,可以参考以下内容:http://blog.csdn.net/guoquanyou/article/details/5689652
最后提供一个数据库格式的日志文件例子:
(下一部分是进行在Servlet和Spring当中配置log4j日志信息)
参考资料:
http://www.cnblogs.com/simle/archive/2011/09/29/2195341.html
http://blog.csdn.net/anlina_1984/article/details/5313023
log4j下载地址:http://logging.apache.org/log4j/1.2/download.html
如果你需要查看API,地址是:http://logging.apache.org/log4j/1.2/apidocs/index.html
测试代码:
public class TestLog4J { private static Logger logger = Logger.getLogger(TestLog4J.class); public static void main(String[] args) { //默认配置,将日志信息输出到控制台,不需要配置log4j.properties文件 // BasicConfigurator.configure(); //使用log4j.properties进行配置 //项目相对路径需要把package都写进来才行 PropertyConfigurator.configure("src/rich/util/config/log4j.properties"); logger.error("This is a error message"); logger.warn("This is a warning message"); logger.info("This is a info message"); logger.debug("This is a debug message"); } }
配置文件log4j.properties
#根Logger,配置优先级和输出源名字,这里定义为appender1 log4j.rootLogger=debug,appender1 #输出到控制台ConsoleAppender log4j.appender.appender1=org.apache.log4j.ConsoleAppender #输出样式为TTCLayout,包含日志产生的时间、线程、类别等等信息 log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
运行结果:
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
简而言之,在编写log4j.properties文件时需要指定:
1.根目录
2.输出地(控制台,文件等)
3.输出样式
Log4j的基本语法:
1)配置根目录Logger,其语法为:
log4j.rootLogger=[Level], appdenderNameA, appenderNameB, ...
其中Level是日志记录的有先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL和你自己的级别,Log4j只建议四个级别,分别是ERROR、WARN、INFO、DEBUG,优先级依次降低。优先级用于输出的日志记录的开关,例如定义了INFO级别,那么低级别DEBUG的日志记录就不会输出(在代码中调用了Logger.debug方法的输出信息)。appdenderNameA定义了输出源的名字,由用户自定义,可定义多个输出源。
例子:
log4j.rootLogger=debug,appender1将Logger的优先级定义为debug,输出源名字为appender1
2)定义输出源的输出目的地Appender,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class,其中,Log4j提供的appender有:
①org.apache.log4j.ConsoleAppender(控制台)
②org.apache.log4j.FileAppender(文件)
③org.apache.log4j.DailyRollingFileAppender(以日期为界限的日志文件,如名字,一般一天一个)
④org.apache.log4j.RollingFileAppender(以文件大小为界限,达到指定大小就自动重新生成另一个日志文件)
⑤org.apache.log4j.WriterAppender(将日志变成流格式发送到指定的地方)
ConsoleAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
FileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DailyRollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
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: 每分钟
RollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
例子:
ConsoleAppender
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
上面定义的输出源appender1的输出目的地为控制台ConsoleAppender
FileAppender
log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.File=log.txt
多定义了一个File属性
DailyRollingFileAppender
log4j.appender.appender1=org.apache.log4j.DailyRollingFileAppender log4j.appender.appender1.file=log.txt log4j.appender.appender1.DatePattern='.'yyyy-MM-dd
定义每天输出一个log
RollingFileAppender
log4j.appender.appender1=org.apache.log4j.RollingFileAppender log4j.appender.appender1.File=logs.txt log4j.appender.appender1.MaxFileSize=100KB log4j.appender.appender1.MaxBackupIndex=10
定义了当大小超过100KB的时候生成新日志文件,最大不超过10个
3)定义输出样式(布局)Layout,其语法为:
log4j.appender.appenderName.layout
= fully.qualified.name.of.layout.class,其中Log4j提供的Layout有:
①org.apache.log4j.HTMLLayout(以hmtl表单格式)
②org.apache.log4j.TTCCLayout(线程,时间,类别等信息)
③org.apache.log4j.SimpleLayout(日志信息级别和信息本身的字符串)
④org.apache.log4j.PatternLayout(灵活的字符串格式,默认只输出信息字符串)
例子
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
上面定义的输出员appender1的输出样式为线程名字,信息级别和信息内容组成。
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%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} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)
例子:
log4j.appender.appender1.layout.ConversionPattern = %-4r [%t] %-5p %c - %m%n结果:
格式字母前带数字是当内容不够时进行左对齐或者右对齐,正数为左对齐,负数为右对齐。还有限制字数如 %c{10}等功能,若有特殊需求,可以参考以下内容:http://blog.csdn.net/guoquanyou/article/details/5689652
最后提供一个数据库格式的日志文件例子:
log4j.rootLogger=DEBUG,appender1 log4j.appender.appender1=org.apache.log4j.jdbc.JDBCAppender log4j.appender.appender1.BufferSize=1 log4j.appender.appender1.URL=jdbc:mysql://localhost:3306/test log4j.appender.appender1.driver=com.mysql.jdbc.Driver log4j.appender.appender1.user=root log4j.appender.appender1.password= log4j.appender.appender1.sql=INSERT INTO LOG4J_INFO(LOG_TIME, THREAD, LOG_LEVEL, CLASS, MESSAGE) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m') log4j.appender.appender1.layout=org.apache.log4j.PatternLayout log4j.appender.appender1.layout.ConversionPattern=%5p | %c{1}-%M [%d{yyyy-MM-dd HH:mm:ss}] - %m%n
(下一部分是进行在Servlet和Spring当中配置log4j日志信息)
参考资料:
http://www.cnblogs.com/simle/archive/2011/09/29/2195341.html
http://blog.csdn.net/anlina_1984/article/details/5313023
相关文章推荐
- Java学习笔记36:Java log4j 基本配置和使用
- hibernate3 学习笔记(三) hibernate 日志配置文件 log4j.properties
- Log4j 学习笔记(二)Log4j快速入门配置文件log4j.properties
- Log4j学习笔记(2)_log4j配置示例&Spring集成log4j
- Log4j 学习笔记(四)log4j的配置文件
- log4j 配置学习笔记
- 学习笔记之linux网络属性配置及其命令用法
- 《Spring+Mybatis》Mybatis简单注解配置的用法学习笔记与代码
- Hibernate学习笔记——log4j及JUnit的配置
- 学习笔记---log4j的使用与配置
- java学习笔记9 - Spring mvc中log4j的配置与使用
- Log4j 学习笔记(三)log4j.properties配置文件详解
- Log4j 学习笔记
- Professional Java Development with the Spring Framework学习笔记(1) - JdbcTemplate 中Query的几种用法
- [转贴] Log4j 学习笔记
- ASP.net(1.1)原理学习笔记--第三章 配置Configuration
- log4j的配置笔记
- J2ME学习笔记_1_开发环境的安装和配置
- struts学习笔记---配置数据源
- 学习配置log4j