java日志(四)--jcl和log4j及log4j2使用

本文介绍了Java日志框架中的jcl(commons-logging)、log4j和log4j2的使用。详细讲解了各组件的功能,如log4j的日志级别、配置文件,log4j2的配置节点,以及jcl的日志实现加载顺序。
摘要由CSDN通过智能技术生成

java日志(四)–jcl和log4j及log4j2使用

一、简介

这里介绍java日志框架另一类,jcl(commons-logging)、log4j、log4j2的使用。其中jcl是定义的一组通用日志接口,
log4j是日志的实现,log4j2也是日志的实现,log4j2对是对log4j的重写,功能更完善。

二、log4j

log4j是apache推出的日志实现,于2015年停止更新了,目前最新版本为1.2.17,下面进行简要介绍。

2.1 官网地址

http://logging.apache.org/log4j/1.2/manual.html

2.2 主要jar包

log4j包为日志的实现包,maven依赖如下:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
2.3 日志级别

日志级别有:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,源码查看org.apache.log4j.Level类

2.4 配置文件

log4j的配置文件为log4j.properties,放在src/main/resources目录下。包含rootLogger(配置日志级别和输出目的地)、
appender(输出目的地配置)、layout(日志格式)等。示例如下:

#设置日志级别和appender(日志输出地,可多个)
log4j.rootLogger=info,stdout,file

#输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#日志格式
log4j.appender.stdout.layout.ConversionPattern=%d %l [%t] %p %m%n

#输出到文件
#直接输出到文件
#log4j.appender.file=org.apache.log4j.FileAppender
#日志文件达到一定大小时生产新文件
#log4j.appender.file=org.apache.log4j.RollingFileAppender
#每天产生新的日志文件
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=log4jStudy.log
log4j.appender.file.Threshold=warn
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#日志格式
log4j.appender.file.layout.ConversionPattern=%d %l [%t] %p %m%n

##输出到邮箱,在此略过
#log4j.appender.email=org.apache.log4j.net.SMTPAppender
#
##输出到数据库,在此略过
#log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender

备注,layout参数如下:

%d:日期;
%M:日志所在方法名;
%p:日志优先级;
%c:日志所在类;
%t:日志所在线程;
%l:日志所在的类、线程及所在的行数;
%m:消息;
%n:换行;
2.5 关键类

org.apache.log4j.Logger:日志类,可通知Logger.getLogger()方法获取实例。

2.6 测试
import org.apache.log4j.Logger;
public class Log4jMain {
   
    private static final Logger logger = Logger.getLogger(Log4jMain.class);
    public static void main(String[] args) {
   
        logger.trace("trace log");
        logger.debug("debug log");
        logger.info("info log");
        logger.warn("warn log");
        logger.error("error log");
        logger.fatal("fatal log", new Exception("fatal exception"));
    }
}

结果生成log4jStudy.log日志及控制台输出:

2018-12-23 21:46:58,881 com.dragon.study.log.Log4jMain.main(Log4jMain.java:18) [main] INFO info log
2018-12-23 21:46:58,889 com.dragon.study.log.Log4jMain.main(Log4jMain.java:19) [main] WARN warn log
2018-12-23 21:46:58,889 com.dragon.study.log.Log4jMain.main(Log4jMain.java:20) [main] ERROR error log
Disconnected from the target VM, address: '127.0.0.1:50263', transport: 'socket'
2018-12-23 21:46:58,889 com.dragon.study.log.Log4jMain.main(Log4jMain.java:21) [main] FATAL fatal log
java.lang.Exception: fatal exception
   at com.dragon.study.log.Log4jMain.main(Log4jMain.java:21)

三、log4j2

log4j2是对log4j的重写,性能更好。

3.1 官网地址

https://logging.apache.org/log4j/2.x/manual/index.html

3.2 主要jar包

log4j-api和log4j-core。maven依赖如下:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.9.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.9.1</version>
</dependency>
3.3 关键类

org.apache.logging.log4j.Logger:日志记录类;
org.apache.logging.log4j.LogManager:日志类工厂,生成Logger实例;

3.4 日志级别

和log4j类似,日志级别有:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,源码查看
org.apache.logging.log4j.Level

3.5 log4j2配置文件

log4j2配置文件通常为log4j2.xml和log4j2-test.xml,加载顺序为log4j2-test.xml>log4j2.xml。下面列出配置文件中的关键
结点。

3.5.1 Configuration结点

Configuration结点是最外层结点,如:

<!--status表示log4j2自身的日志打印级别,如trace会打印出log4j2加载、运行等信息, monitorinterval监控间隔,单位为秒-->
<Configuration status="trace" monitorinterval="6">
</Configuration>
3.5.2 Properties结点

定义变量,如:

<Properties>
    <Property name="nowDate">%date{yyyy-MM-dd}</Property>
    <Property name="logDir">${sys:catalina.home}/logs/</Property>
</Properties>
3.5.3 appender结点

appender结点定义日志输出目的地,官网地址:https://logging.apache.org/log4j/2.x/manual/appenders.html
常用的appender示例如下,解释请查看注释:

<!--日志输出到控制台-->
<Console name="consoleAppender" target="SYSTEM_OUT">
    <PatternLayout pattern="%date %logger %processId %threadId %method %class %file %highlight{%level} : %green{%msg} %n" 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值