IDEA下Log4j 使用教程

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI主件、甚至是套接口服务器;我们可以通过配置文件控制每一条日志的输出格式,通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程,可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

一、配置过程

1、通过Maven 的pom.xml 导入log4j的jar包。

2、 在src/main/resources下创建log4j.properties文件,配置属性。

3、配置根Logger,Logger 负责处理日志记录的大部分操作

其语法为:log4j.rootLogger = [level], appenderName,appenderName,….

其中,level的日志记录的优先级,分为 OFF、FATAL、ERROR、WRAN、INFO、DEBUG、ALL或者自定义的级别。我们常使用四个级别,优先级从高到低分别是 ERROR、WRAN、INFO、DEBUG。通过定义级别,可以控制应用程序中相应级别的日志信息的开关,比如定义了INFO的级别,只有高于这个级别才进行处理, 而低于INFO级别的DEBUG的日志信息将不会被打印出来。ALL: 打印所有的日志, OFF: 关闭所有的日子输出, appenderName 就是指日志信息输出到哪个地方, 可以同时指定多个输出地, 如控制台(Console)、文件(Files)等,还可以根据天数或者文件大小产生新的文件,可以以流的形式发送到其它地方等。

4、配置日志信息输出目的地 Appender,Appender 负责控制日志记录操作的输出

语法为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.optionN = valueN 这里的appenderName为在第一步里定义的,可任意起名。

5、其中,Log4j 提供的appender有以下几种:

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

org.apache.log4j.FileAppender(文件)

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

org.apache.log4j.RollingFileAppender(文件大小到指定尺寸的时候产生一个新文件),可通过log4j.appender.R.MaxFileSize=100kb设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件。

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

例如: log4j.appender.stdout=org.apache.log4j.ConsoleAppender 定义一个名为stdout的输出目的地,ConsoleAppender为控制台。

6、 配置日志信息的格式(布局)Layout, Layout 负责格式化Appender的输出

语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.optionN = valueN

其中, Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(已HTML表格形式布局)

org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志信息的级别 和信息字符串)

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

7、关于格式化日志

Log4j采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

%m 输出代码中指定的消息

%M 输出打印该条日志的方法名

%p 输出优先级, 即DEBUG, INFO, WARN, ERROR, FATAL;

%r 输出自应用启动到输出 该log信息耗费的毫秒数;

%c 输出所属的类目, 通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符, windows平台为”rn“ , Unix平台为”n“;

%d 输出日志时间点的日期或时间, 默认格式为ISO8601,也可以在其后指定格式,比如: %d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2016-8-20 22:52:55,921;

%|输出日志事件的发生位置,及在代码中的行数。

二、配置文件详解(代码)
###设置###
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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到文件F://logs/debug.log ###
log4j.appender.D = org.apache.log4j.FileAppender
log4j.appender.D.File = F:/logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n

### 输出ERROR 级别以上的日志文件到 文件F://logs.error.log ###
log4j.appender.E = org.apache.log4j.FileAppender
log4j.appender.E.File = F://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n

代码注释如下

三、写测试文件
import org.apache.log4j.Logger;

/**
 * Created by Gaohu on 2016-8-20
 */
public class Log4JTest {
    private static  final Logger LOGGER = Logger.getLogger(Log4JTest.class);
    public static void  main(String[] agrs){

        // 记录debug级别的信息
        LOGGER.debug("This is debug message.");
        // 记录info级别的信息
        LOGGER.info("This is info message.");
        // 记录warn级别的信息
        LOGGER.info("This is warn message.");
        // 记录error级别的信息
        LOGGER.error("This is error message.");
    }

}
四、测试结果如下

在F盘下生成了debug.log 和 error.log 两个文件,文件记录了日志信息。

参考文件链接:http://www.cnblogs.com/ITtangtang/p/3926665.html

http://www.blogjava.net/gdws/articles/263160.html


  转载请注明: Hi 高虎 IDEA下Log4j 使用教程

 上一篇
微信接口JS-SDK开发测试 微信接口JS-SDK开发测试
微信接口JS-SDK开发测试 1、先注册一个微信公众号,然后在公众号设置的功能设置里填写JS接口安全域名 2、 在页面中引入JS文件 <script type="text/javascript" src=&
2016-08-25
下一篇 
Maven 项目部署学习 Maven 项目部署学习
相对于传统的项目,Maven下管理和构建项目非常方便与简单, Maven搭建详解。 Maven骨架创建Java Web项目 注意: 在创建项目过程中,Maven会去中央仓库下载依赖或组件,可能有一点延迟。 启动Java Web 项目 特别
2016-08-19
  目录