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

相关推荐
敲代码娶不了六花1 小时前
jsp | servlet | spring forEach读取不了对象List
java·spring·servlet·tomcat·list·jsp
Yhame.1 小时前
深入理解 Java 中的 ArrayList 和 List:泛型与动态数组
java·开发语言
是小崔啊2 小时前
开源轮子 - EasyExcel02(深入实践)
java·开源·excel
mazo_command3 小时前
【MATLAB课设五子棋教程】(附源码)
开发语言·matlab
myNameGL3 小时前
linux安装idea
java·ide·intellij-idea
IT猿手3 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
青春男大3 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
88号技师3 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
Zer0_on3 小时前
数据结构栈和队列
c语言·开发语言·数据结构
一只小bit3 小时前
数据结构之栈,队列,树
c语言·开发语言·数据结构·c++