java log相关:Log4J、Log4J2、LogBack,SLF4J
目录
- 测试
- maven依赖
- logback.xml
- 测试主程序
- 测试输出
- arthas查看logger
- 总结使用
- 参考文档
测试
maven依赖
<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 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>
测试主程序
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
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
以下几种:
- slf4j + logback: slf4j-api.jar + logback-classic.jar + logback-core.jar
- slf4j + log4j: slf4j-api.jar + slf4j-log412.jar + log4j.jar
- slf4j + jul: slf4j-api.jar + slf4j-jdk14.jar
- 也可以只用slf4j无日志实现:slf4j-api.jar + slf4j-nop.jar
参考文档
- https://cloud.tencent.com/developer/article/2347147
- https://www.baeldung.com/slf4j-classpath-multiple-bindings