java log相关:Log4J、Log4J2、LogBack,SLF4J

目录

测试

maven依赖

xml 复制代码
   <dependencies>

            <!-- SLF4J API -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>2.0.13</version> <!-- 推荐使用最新稳定版 -->
            </dependency>

            <!-- Logback Classic (包含 logback-core) -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.4.14</version> <!-- 与 slf4j-api 兼容 -->
            </dependency>

            <!-- logback-core 是 logback-classic 的依赖,无需单独声明 -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.4.14</version>
            </dependency>


        <!-- Log4j 2 API -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.23.1</version>
        </dependency>

        <!-- Log4j 2 Core 实现 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.23.1</version>
        </dependency>

        <!-- 如果你使用 SLF4J 门面,需要桥接 -->
        <!-- 将 SLF4J 调用桥接到 Log4j 2 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
            <version>2.23.1</version>
        </dependency>

    </dependencies>

logback.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 按天滚动的日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>//Users/dwl/projects/maven-test/logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 日志级别控制 -->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

测试主程序

java 复制代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        logger.info("应用启动中...");
        logger.warn("这是一个警告");
        logger.error("这是一个错误");
    }
}

或者使用lombok

java 复制代码
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Main {

    public static void main(String[] args) {
        log.info("应用启动中...");
        log.warn("这是一个警告");
        log.error("这是一个错误");
    }
}

测试输出

arthas查看logger

总结使用

理解门面模式: https://blog.csdn.net/qq_26437925/article/details/148292560

以下几种:

  1. slf4j + logback: slf4j-api.jar + logback-classic.jar + logback-core.jar
  2. slf4j + log4j: slf4j-api.jar + slf4j-log412.jar + log4j.jar
  3. slf4j + jul: slf4j-api.jar + slf4j-jdk14.jar
  4. 也可以只用slf4j无日志实现:slf4j-api.jar + slf4j-nop.jar

参考文档

  1. https://cloud.tencent.com/developer/article/2347147
  2. https://www.baeldung.com/slf4j-classpath-multiple-bindings
相关推荐
YS_Geo3 小时前
多Agent协作案例:用AutoGen实现“写代码+测Bug”的自动开发流程
log4j
于顾而言3 小时前
【笔记】Software Engineering at Google
笔记·log4j·软件工程
奔跑吧邓邓子3 小时前
【Java实战㉖】深入Java单元测试:JUnit 5实战指南
java·junit·单元测试·实战·junit5
SheldonChang4 小时前
Onlyoffice集成与AI交互操作指引(Iframe版)
java·人工智能·ai·vue·onlyoffice·postmessage
数据爬坡ing4 小时前
C++ 类库管理系统的分析与设计:面向对象开发全流程实践
java·运维·开发语言·c++·软件工程·软件构建·运维开发
DKPT4 小时前
JVM新生代和老生代比例如何设置?
java·开发语言·jvm·笔记·学习
知彼解己4 小时前
JVM 运行时数据区域
java·开发语言·jvm
小蒜学长4 小时前
spring boot驴友结伴游网站的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
江团1io04 小时前
一篇文章带你彻底搞懂 JVM 垃圾收集器
java·开发语言·jvm