Java 项目日志实例:综合应用

点击下方关注我,然后右上角点击..."设为星标",就能第一时间收到更新推送啦~~~

本文介绍 JCL(java common logging) 和 SLF4J 分别与 Log4j 结合使用的示例。

1

JCL + Log4j 使用示例

1、JCL(java common logging) + Log4j 介绍

使用 commons-logging 的 Log 接口,并由 commons-logging 在运行时决定使用哪种日志架构(如 Log4j)。现在,Apache 通用日志工具 commons-logging 和 Log4j 已经成为 Java 日志的标准工具,这个组合是比较常用的一个日志框架组合。

2、JCL(java common logging) + Log4j 使用步骤说明

(1)选择jar包

引入必要的包:commons-logging-1.2.jar 、log4j1.2.17.jar。

(2)pom.xml 配置

xml 复制代码
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>


<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

(3)common-logging.properties 配置文件

只需要一行即可,放在 classpath 下,如果是 Maven 中就在 src/resources 下,不过如果没有 common-logging.properties 文件,但是 src 下有 log4j.properties 配置也可以正常的输出 Log4j 设置的日志。

go 复制代码
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

(4)log4j.properties 配置文件

perl 复制代码
#配置根Logger
#改代码表示输输出info级别以上的日志,文件分别输出,一个是file,一个是error
    log4j.rootLogger=info,file,error 
#配置file日志信息输出目的地Appender
#定义名为file的输出端是每天产生一个日志文件
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender    #指定日志信息的最低输出级别位INFO,默认为DEBUG。
    log4j.appender.file.Threshold=INFO    #指定当前消息输出到jpm/log4j/log.log文件中
    log4j.appender.file.File=/jpm/log4j/log.log    #指定按天来滚动日志文件
    log4j.appender.file.DatePattern=yyyy-MM-dd    #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式
    log4j.appender.file.layout=org.apache.log4j.PatternLayout    #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息
    log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n    #指定输出信息的编码
    log4j.appender.file.encoding=UTF-8
#配置error日志信息输出目的地Appender
#定义名为error的输出端是每天产生一个日志文件
    log4j.appender.error=org.apache.log4j.DailyRollingFileAppender    #指定日志信息的最低输出级别位ERROR,默认为DEBUG。
    log4j.appender.error.Threshold=ERROR    #指定当前消息输出到jpm/log4j/error.log文件中
    log4j.appender.error.File=/jpm/log4j/error.log    #指定按月来滚动日志文件
    log4j.appender.error.DatePattern=yyyy-MM    #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式
    log4j.appender.error.layout=org.apache.log4j.PatternLayout    #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息
    log4j.appender.error.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n    #指定输出信息的编码
    log4j.appender.error.encoding=UTF-8
#使某个功能的日志单独输出到指定的日志文件
    log4j.logger.saveUserLog=INFO,saveUserLog    #该配置就是让job的日志只输出到自己指定的日志文件中,表示Logger不会在父Logger的appender里输出,默认为true。
    log4j.additivity.saveUserLog=false
    log4j.appender.saveUserLog=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.saveUserLog.File=/jpm/log4j/saveUserLog.log
    log4j.appender.saveUserLog.DatePattern=yyyy-MM-dd
    log4j.appender.saveUserLog.Append=true
    log4j.appender.saveUserLog.layout=org.apache.log4j.PatternLayout
    log4j.appender.saveUserLog.layout.ConversionPattern=%m%n
    log4j.appender.error.encoding=UTF-8

(5)输出日志的代码示例

java 复制代码
package jpm.jcllog4j;    
import org.apache.commons.logging.Log;    
import org.apache.commons.logging.LogFactory;    
public class TestJclAndLog4j {        
public static void main(String[] args) {            
  final Log LOGGER = LogFactory.getLog(TestJclAndLog4j.class);
    LOGGER.debug("TestJclAndLog4j debug log.");
    LOGGER.info("TestJclAndLog4j info log.");
    LOGGER.error("TestJclAndLog4j error log.");
  }
}

(6)打印日志结果

2

SLF4J + Log4j 使用示例

1、SLF4J + Log4j 介绍

SLF4j+Log4j 与 JCL+Log4J 的使用方式差不多,主要差异就在 SLF4J 用 用绑定包(slf4j-Log4j12.jar)来告知用哪种日志实现,而 JCL 是通过配置文件来获得该选择哪个日志实现。

2、SLF4J + Log4j使用步骤说明

(1)选择jar包

引入必要的包:slf4j-api.jar 、slf4j-log4j12.jar。

(2)pom.xml 配置

xml 复制代码
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>


<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
</dependency>

(3)log4j.properties 配置文件

perl 复制代码
#配置根Logger
#改代码表示输输出info级别以上的日志,文件分别输出,一个是file,一个是error
    log4j.rootLogger=info,file,error 
#配置file日志信息输出目的地Appender
#定义名为file的输出端是每天产生一个日志文件
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender    #指定日志信息的最低输出级别位INFO,默认为DEBUG。
    log4j.appender.file.Threshold=INFO    #指定当前消息输出到jpm/log4j/log.log文件中
    log4j.appender.file.File=/jpm/log4j/log.log    #指定按天来滚动日志文件
    log4j.appender.file.DatePattern=yyyy-MM-dd    #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式
    log4j.appender.file.layout=org.apache.log4j.PatternLayout    #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息
    log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n    #指定输出信息的编码
    log4j.appender.file.encoding=UTF-8
#配置error日志信息输出目的地Appender
#定义名为error的输出端是每天产生一个日志文件
    log4j.appender.error=org.apache.log4j.DailyRollingFileAppender    #指定日志信息的最低输出级别位ERROR,默认为DEBUG。
    log4j.appender.error.Threshold=ERROR    #指定当前消息输出到jpm/log4j/error.log文件中
    log4j.appender.error.File=/jpm/log4j/error.log    #指定按月来滚动日志文件
    log4j.appender.error.DatePattern=yyyy-MM    #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式
    log4j.appender.error.layout=org.apache.log4j.PatternLayout    #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息
    log4j.appender.error.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n    #指定输出信息的编码
    log4j.appender.error.encoding=UTF-8
#使某个功能的日志单独输出到指定的日志文件
    log4j.logger.saveUserLog=INFO,saveUserLog    #该配置就是让job的日志只输出到自己指定的日志文件中,表示Logger不会在父Logger的appender里输出,默认为true。
    log4j.additivity.saveUserLog=false
    log4j.appender.saveUserLog=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.saveUserLog.File=/jpm/log4j/saveUserLog.log
    log4j.appender.saveUserLog.DatePattern=yyyy-MM-dd
    log4j.appender.saveUserLog.Append=true
    log4j.appender.saveUserLog.layout=org.apache.log4j.PatternLayout
    log4j.appender.saveUserLog.layout.ConversionPattern=%m%n
    log4j.appender.error.encoding=UTF-8

(4)输出日志的代码示例

java 复制代码
package jpm.slf4jlog4j;    
import org.slf4j.Logger;    
import org.slf4j.LoggerFactory;    
public class TestSlf4jAndLog4j {        
  public static void main(String[] args) {            
    final Logger LOGGER = LoggerFactory.getLogger(TestSlf4jAndLog4j.class);
    LOGGER.debug("TestSlf4jAndLog4j debug log:{}", "debug");
    LOGGER.info("TestSlf4jAndLog4j info log:{}", "info");
    LOGGER.error("TestSlf4jAndLog4j error log:{}", "error");
  }
}

(5)打印日志结果

Java 日志处理介绍结束。

相关推荐
生命几十年3万天2 分钟前
java的threadlocal为何内存泄漏
java
caridle13 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
萧鼎17 分钟前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸17 分钟前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农18 分钟前
Python 继承、多态、封装、抽象
开发语言·python
^velpro^19 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋322 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花27 分钟前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端30 分钟前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan37 分钟前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava