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 日志处理介绍结束。

相关推荐
ly76893 分钟前
磁盘 I/O 延迟突增:用 iostat、blktrace 与火焰图定位到具体调用栈
java·linux·前端·数据库·iostat·磁盘 i/o·blktrace
小白学大数据5 分钟前
Python 小工具实战:用问财接口搭建金融数据采集器
开发语言·人工智能·python
泡海椒7 分钟前
jquick-pdf 核心原理解析:基于 HTML 模板动态渲染 PDF 的实现逻辑
java·开发语言·pdf
Bs_MoneyMagnet15 分钟前
基于springboot+vue的图书馆预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·图书管理系统·计算机毕业设计
小蒜学长26 分钟前
基于小程序的绘画作品创作与分享社区系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·绘画作品·创作分享社区
金玉满堂@bj29 分钟前
# Java文件打包成可执行JAR包(两种方式:原生javac\+jar命令 / Maven)
java
事圆则缓37 分钟前
Java 异常、日志与 Android 崩溃定位
java
砍材农夫2 小时前
spring|spring web|拦截器、过滤器、aop
java·spring boot·spring·spring cloud
小此方3 小时前
「C++AI大模型接入SDK」(一) API接入与本地两种方式对比、API Key获取、API报文详解与简单API的构建
开发语言·c++·人工智能
wuyk5553 小时前
Python实战项目02:学生成绩管理系统(控制台|CSV导出|完整落地)
开发语言·python