静态调用日志 - StaticLog
# 静态调用日志 - StaticLog
# 一、介绍
在实际开发中,很多时候我们只想简单地记录日志,而不想每次都去手动创建 Log
对象。这种情况下,Hutool 提供了一个便捷的静态日志工具类 StaticLog
,通过简单的方法调用就能快速记录日志。
StaticLog
是对常用日志方法的静态封装,内部基于 LogFactory
实现,可以直接使用 trace
、debug
、info
、warn
、error
等方法,同时支持日志级别控制、占位符替换、异常信息输出等功能。
# 核心功能
- 静态方法调用:通过静态方法,直接记录不同级别的日志,支持占位符替换。
- 与
LogFactory
同名方法兼容:可以使用get
方法获取Log
对象,支持灵活切换到其他日志实现。 - 极简日志记录:无需手动创建日志对象,直接调用静态方法即可。
# 二、方法介绍
# 1. 基础使用
直接调用静态方法记录日志,例如:
StaticLog.info("This is a static {} log.", "INFO");
1
# 可用方法
StaticLog.trace(String format, Object... arguments)
- 记录 TRACE 级别日志。StaticLog.debug(String format, Object... arguments)
- 记录 DEBUG 级别日志。StaticLog.info(String format, Object... arguments)
- 记录 INFO 级别日志。StaticLog.warn(String format, Object... arguments)
- 记录 WARN 级别日志。StaticLog.error(String format, Object... arguments)
- 记录 ERROR 级别日志。
这些方法均支持占位符 {}
替换,并自动处理参数。
# 示例代码
public class StaticLogExample {
public static void main(String[] args) {
StaticLog.trace("This is a static {} log.", "TRACE");
StaticLog.debug("This is a static {} log.", "DEBUG");
StaticLog.info("This is a static {} log.", "INFO");
StaticLog.warn("This is a static {} log.", "WARN");
StaticLog.error("This is a static {} log.", "ERROR");
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 输出结果
TRACE: This is a static TRACE log.
DEBUG: This is a static DEBUG log.
INFO : This is a static INFO log.
WARN : This is a static WARN log.
ERROR: This is a static ERROR log.
1
2
3
4
5
2
3
4
5
# 2. 记录日志并包含异常信息
可以在日志中添加异常栈信息,便于排查问题:
try {
int result = 10 / 0;
} catch (Exception e) {
StaticLog.error("An error occurred: {}", e, e.getMessage());
}
1
2
3
4
5
2
3
4
5
# 输出结果
ERROR: An error occurred: / by zero
java.lang.ArithmeticException: / by zero
1
2
2
# 3. 控制日志级别的 log
方法
可以通过指定日志级别参数来动态控制日志输出:
StaticLog.log(LogLevel.INFO, "This is a dynamic level log with {}", "INFO");
1
# 参数说明
LogLevel level
:日志级别,支持TRACE
、DEBUG
、INFO
、WARN
、ERROR
。String format
:日志格式,支持占位符{}
。Object... arguments
:占位符替换参数。
# 4. 获取 Log 对象
StaticLog
中还提供了 get
方法,与 LogFactory
中的 get
方法相同,用于获取 Log
对象:
Log log = StaticLog.get();
log.info("This is a log object created via StaticLog.get()");
1
2
2
# 实际开发场景
- 快速日志记录:在开发阶段,不想每次手动创建日志对象,可以使用
StaticLog
快速输出调试信息。 - 灵活调试:在一些测试代码中,可以通过
StaticLog
记录调试信息,而无需引入复杂的日志配置。 - 占位符日志格式:在动态拼接日志信息时,使用占位符方式可以更简洁、清晰地记录日志。
# 三、完整代码示例
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import cn.hutool.log.StaticLog;
import cn.hutool.log.level.LogLevel;
public class StaticLogExample {
public static void main(String[] args) {
// 基础日志记录
StaticLog.info("This is a static {} log.", "INFO");
// 记录包含异常信息的日志
try {
int result = 10 / 0;
} catch (Exception e) {
StaticLog.error("An error occurred: {}", e, e.getMessage());
}
// 动态指定日志级别
StaticLog.log(LogLevel.WARN, "This is a dynamic level log with {}", "WARN");
// 获取 Log 对象并记录日志
Log log = StaticLog.get();
log.debug("This is a log object created via StaticLog.get()");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 运行结果
INFO : This is a static INFO log.
ERROR: An error occurred: / by zero
java.lang.ArithmeticException: / by zero
WARN : This is a dynamic level log with WARN
DEBUG: This is a log object created via StaticLog.get()
1
2
3
4
5
2
3
4
5
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08