关闭

log4j笔记

标签: 日志
449人阅读 评论(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
查看评论

Log4j笔记

Log4j的设计思想非常简单,即logger和appender logger作用就是在代码里使用这个logger,打印信息 logger后可以跟一个或多个appender,appender用以表明吧日志保存到哪里,比如直接命令行显示 ,日志文件等 log4j的配置文件有properti...
  • superalsrk
  • superalsrk
  • 2013-08-21 15:59
  • 570

log4j笔记

http://kdboy.javaeye.com/blog/208851
  • hongshi
  • hongshi
  • 2008-06-30 12:28
  • 91

小白笔记----------------------log4j笔记(二)

在配置web中的log4j时容易犯的错误,一个是jar包的引入在web根目录下要引入,一个是配置文件的路径问题 !!要多注意!!
  • Aaron92
  • Aaron92
  • 2016-07-18 11:10
  • 172

小白笔记------------------log4j笔记(1)

Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显 示内容。 ...
  • Aaron92
  • Aaron92
  • 2016-07-15 11:17
  • 134

log4j日志输出控制

log4j日志输出控制
  • high2011
  • high2011
  • 2016-10-17 13:16
  • 1014

Log4j笔记 第一章 简单用上Log4j

Log4j笔记 第一章 简单用上Log4j 博客分类: Log4j log4jXMLApacheEclipse编程  第一节 概述 Log4j诞生,为减轻对成千上万的 Java代码   System.out.println(); ...
  • suejl
  • suejl
  • 2014-05-07 01:31
  • 500

log4j学习(三)——AOP日志

log4j aop
  • zllaptx4869
  • zllaptx4869
  • 2015-03-01 14:10
  • 1381

Log4j源码解析--框架流程+核心解析

OK,现在我们来研究Log4j的源码: 这篇博客有参照上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/06/28/381667.html。感谢作者的无私分享。 Log4J将写日志功能抽象成七个核心类或者接口:Logger、...
  • u011794238
  • u011794238
  • 2016-02-25 13:31
  • 5290

解决 log4j.xml 问题 http//jakarta.apache.org/log4j/ uri is not registered 的方法

解决log4j.xml问题http//jakarta.apache.org/log4j/ uri is not registered配置log4j.xml出现“http //jakarta.apache.org/log4j/ uri is not registered”的错误信息。原始的log4j....
  • HeatDeath
  • HeatDeath
  • 2017-10-24 15:46
  • 697

Maven项目中log4j配置

首先jar配置,pom.xml文件下配置jar包如下:           log4j log4j 1.2.17 org.slf4j slf4j-api 1.5.10 org.slf4j slf4j-log4j12 ...
  • s592652578
  • s592652578
  • 2016-02-23 14:22
  • 4368
    个人资料
    • 访问:73523次
    • 积分:2173
    • 等级:
    • 排名:千里之外
    • 原创:132篇
    • 转载:4篇
    • 译文:0篇
    • 评论:4条
    文章分类
    百度统计