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
相关推荐
virus594512 小时前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
没差c13 小时前
springboot集成flyway
java·spring boot·后端
时艰.13 小时前
Java 并发编程之 CAS 与 Atomic 原子操作类
java·开发语言
编程彩机13 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪13 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
Yvonne爱编码14 小时前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
像少年啦飞驰点、15 小时前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
眼眸流转15 小时前
Java代码变更影响分析(一)
java·开发语言
Yvonne爱编码15 小时前
JAVA数据结构 DAY4-ArrayList
java·开发语言·数据结构
阿猿收手吧!15 小时前
【C++】C++原子操作:compare_exchange_weak详解
java·jvm·c++