关闭

log4j笔记

标签: 日志
326人阅读 评论(0) 收藏 举报

前言

Log4j是Apache的一个开放源代码项目。使用Log4j,我们可以控制日志信息输出目的地,日志的输出格式,日志的级别。这些都可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

开始使用

1、导入log4j的jar包:log4j-1.2.17.jar
2、log4j配置,一般可以采用两种方式,.properties和.xml,此处我们使用properties。在CLASSPATH下(如src/main/resources)创建log4j.properties配置文件,最基本的内容如下:

log4j.rootLogger=INFO,consoleAppender
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout 

3、在要输出日志的类中定义:

private final Log log = LogFactory.getLog(getClass());

要输出的内容:

log.info("我是日志!");

注意:
如果只是引入了jar包但是没有创建配置文件或者配置文件为空的话,使用输出日志的时候会报如下错:

log4j:WARN No appenders could be found for logger (com.hello.test.HelloTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

如果有配置文件但是其中缺少layout的配置的话,会报如下错:

log4j:ERROR Could not find value for key 
log4j.appender.consoleAppender.layout
log4j:ERROR No layout set for the appender named [consoleAppender].

log4j.properties配置文件详解

配置根Logger

log4j.rootLogger=INFO,consoleAppender

此句为将等级为INFO的日志输出到consoleAppender这个目的地
等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,
优先级FATAL>ERROR>WARN>INFO>DEBUG,
如果配置OFF则不打出任何信息,如果配置为INFO则只显示INFO, WARN, ERROR, FATAL的log信息,而DEBUG信息不会被显示
此处也可写为:

log4j.rootCategory=INFO,consoleAppender

但是要注意,rootLogger是新的使用名称,对应Logger类
rootCategory是旧的使用名称,对应原来的Category类
Logger类是Category类的子类,所以,rootCategory是旧的用法,不推荐使用

输出目的地

Log4j允许日志请求被输出到多个输出源。一个输出源被称做一个Appender。
输出到控制台:

log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender 

输出到文件:

log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.File=D://file.log 

输出到文件,每天产生一个日志文件:

log4j.appender.dailyRollingFileAppender=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.dailyRollingFileAppender.File=D://log/file.log

输出到轮转文件:

log4j.appender.rollingFileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFileAppender.File=D://log/rollingfile.log
log4j.appender.rollingFileAppender.Append=true 
log4j.appender.rollingFileAppender.MaxFileSize=1KB
log4j.appender.rollingFileAppender.MaxBackupIndex=1 

该配置指定了输出源dailyRollingFileAppender,是一个轮转日志文件。最大的文件是1KB,当一个日志文件达到最大尺寸时,Log4J会自动把rollingfile.log重命名为rollingfile.log.1,然后重建一个新的rollingfile.log文件,依次轮转。

输出到邮件:

log4j.appender.smtpAppender=org.apache.log4j.net.SMTPAppender
log4j.appender.smtpAppender.Threshold=ERROR 
log4j.appender.smtpAppender.BufferSize=10 
log4j.appender.smtpAppender.From=xxx@163.com
log4j.appender.smtpAppender.SMTPUsername=xxx@163.com
log4j.appender.smtpAppender.SMTPPassword=xxxxxx
log4j.appender.smtpAppender.SMTPHost=smtp.163.com
log4j.appender.smtpAppender.Subject=Log4J Message 
log4j.appender.smtpAppender.To=xxx@qq.com

发送邮件需要引入jar包:mail-1.4.7.jar,activation-1.1.jar
maven依赖如下:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

输出到数据库:

log4j.appender.jdbcAppender=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.jdbcAppender.URL=jdbc:mysql://localhost:3306/test
log4j.appender.jdbcAppender.driver=com.mysql.jdbc.Driver
log4j.appender.jdbcAppender.user=root
log4j.appender.jdbcAppender.password=
log4j.appender.jdbcAppender.sql=INSERT INTO LOG4J (Message) VALUES (' %d %c %p %m ')

输出到数据库需要引入jar包:mysql-connector-java-5.1.36.jar
maven依赖如下:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>

输出格式

log4j.appender.consoleAppender.layout.ConversionPattern= %p %d{yyyy-MM-dd HH:mm:ss} %c %m %n 

%p:日志信息级别
%d{}:日志信息产生时间
%c:日志信息所在地(类名)
%m:产生的日志具体信息
%n:输出日志信息换行
%l:所在的类名以及方法,行数

输出布局

log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout

org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

为不同的Appender设置日志输出级别

log4j.appender.fileAppender.Threshold = ERROR
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:35755次
    • 积分:1695
    • 等级:
    • 排名:千里之外
    • 原创:125篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    文章分类
    百度统计