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
相关推荐
num_killer5 小时前
小白的Langchain学习
java·python·学习·langchain
期待のcode6 小时前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐6 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
a程序小傲6 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红6 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥6 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
小楼v6 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地7 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl200209257 小时前
Guava Cache 原理与实战
java·后端·spring
yangminlei7 小时前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot