温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何理解Spring日志中Log4j

发布时间:2021-10-22 09:04:13 来源:亿速云 阅读:180 作者:柒染 栏目:大数据

这篇文章将为大家详细讲解有关如何理解Spring日志中Log4j ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Slf4j 简介

  slf4j 的全称是 Simple Loging Facade For Java,即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如 JDBC 一样,只是一种规则而已。所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案,比如 apache 的 org.apache.log4j.Logger,JDK 自带的 java.util.logging.Logger 以及 log4j 等。

pom.xml 配置如下:

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

主要增加了 org.slf4j:slf4j-log4j12 依赖

创建 log4j.properties 配置文件 :

在 src/main/resources 目录下创建名为 log4j.properties 的属性配置文件

log4j.rootLogger=INFO, console, file

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n

日志配置相关说明:

  • log4j.rootLogger:根日志,配置了日志级别为 INFO,预定义了名称为 console、file 两种附加器

  • log4j.appender.console:console 附加器,日志输出位置在控制台

  • log4j.appender.console.layout:console 附加器,采用匹配器布局模式

  • log4j.appender.console.layout.ConversionPattern:console 附加器,日志输出格式为:日期 日志级别 [类名] - 消息换行符

  • log4j.appender.file:file 附加器,每天产生一个日志文件

  • log4j.appender.file.File:file 附加器,日志文件输出位置 logs/log.log

  • log4j.appender.file.layout:file 附加器,采用匹配器布局模式

  • log4j.appender.A3.MaxFileSize:日志文件最大值

  • log4j.appender.A3.MaxBackupIndex:最多纪录文件数

  • log4j.appender.file.layout.ConversionPattern:file 附加器,日志输出格式为:日期 日志级别 [类名] - 消息换行符

测试日志输出

创建一个测试类,并测试日志输出效果,代码如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyTest {

    public static final Logger logger = LoggerFactory.getLogger(MyTest.class);

    public static void main(String[] args) {
        logger.info("slf4j for info");
        logger.debug("slf4j for debug");
        logger.error("slf4j for error");
        logger.warn("slf4j for warn");

        String message = "Hello SLF4J";
        logger.info("slf4j message is : {}", message);//{}占位符
    }
}

此时控制台显示为:

2018-06-07 05:15:42,914 INFO [com.hjj.hello.spring.MyTest] - slf4j for info
2018-06-07 05:15:42,915 ERROR [com.hjj.hello.spring.MyTest] - slf4j for error
2018-06-07 05:15:42,915 WARN [com.hjj.hello.spring.MyTest] - slf4j for warn
2018-06-07 05:15:42,916 INFO [com.hjj.hello.spring.MyTest] - slf4j message is : Hello SLF4J

项目根目录下也会多出 logs/log.log 目录及文件

附:占位符({})说明

  打日志的时候使用了 {} 占位符,这样就不会有字符串拼接操作,减少了无用 String 对象的数量,节省了内存。并且,记住,在生产最终日志信息的字符串之前,这个方法会检查一个特定的日志级别是不是打开了,这不仅降低了内存消耗而且预先降低了 CPU 去处理字符串连接命令的时间。

关于如何理解Spring日志中Log4j 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI