Java 日志打印
Java 日志
logback-classic 和 logback-core 的区别
- logback-core:logback 框架基础
- logback-classic:基于 logback-core,实现 sel4j 和其他高级功能
maven
<dependencies>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.3.14</version>
</dependency>
</dependencies>
java
public class Application {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
log.info("hello world");
}
}
lombok
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</dependency>
@Slf4j
public class Application {
public static void main(String[] args) {
log.info("hello world");
}
}
Spring Boot 日志
格式
- Date and Time: Millisecond precision and easily sortable.
- Log Level:
ERROR,WARN,INFO,DEBUG, orTRACE. - Process ID.
- A
---separator to distinguish the start of actual log messages. - Application name: Enclosed in square brackets (logged by default only if
spring.application.nameis set) - Thread name: Enclosed in square brackets (may be truncated for console output).
- Correlation ID: If tracing is enabled (not shown in the sample above)
- Logger name: This is usually the source class name (often abbreviated).
- The log message.
2024-05-23T12:38:13.986Z INFO 110098 --- [myapp] [ main] o.s.b.d.f.logexample.MyApplication : Starting MyApplication using Java 17.0.11 with PID 110098 (/opt/apps/myapp.jar started by myuser in /opt/apps/)
2024-05-23T12:38:14.008Z INFO 110098 --- [myapp] [ main] o.s.b.d.f.logexample.MyApplication : No active profile set, falling back to 1 default profile: "default"
2024-05-23T12:38:18.678Z INFO 110098 --- [myapp] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
application.yaml
# 输出 debug 级别日志
debug: true
# 日志文件
## 绝对路径:输出到指定文件;相对路径:输出到当前目录指定文件
logging.file.name: my.log
## 文件名 spring.log;绝对路径:输出到指定目录;相对路径:输出到当前目录下的指定目录
logging.file.path: /var/log
## 日志切割,默认日志文件大小是 10MB
## logback 可以在 application.yaml 中配置,其他日志框架需要使用框架的配置文件
## 日志归档(切割的旧日志文件)名称格式,%i 是区分同日期的递增序号
logging.pattern.rolling-file-name: app-%d{yyyy-MM-dd}.%i.log
## 清除旧日志
logging.logback.rollingpolicy.clean-history-on-start: true
## 单日志文件大小
logging.logback.rollingpolicy.max-file-size: 10MB
## 所有日志文件大小
logging.logback.rollingpolicy.total-size-cap: 1G
## 保留文件数量
logging.logback.rollingpolicy.max-history: 7
## 日志级别
## 环境变量,只支持包级别,不支持类级别 LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG
logging.level.root: warn
logging.level.org.springframework.web: debug
logging.level.org.hibernate: error
## 日志分组,便于日志配置
logging.group.tomcat=org.apache.catalina,org.apache.coyote,org.apache.tomcat
logging.level.tomcat=trace
其他
参考: