解决日志警告问题
# 解决日志警告问题
# 1. 问题背景
在使用 Hutool 框架时,如果没有引入第三方日志框架(如 Log4j、Slf4j 等),Hutool 会默认使用 JDK 内置的 java.util.logging
作为日志实现。此时,系统会查找 logging.properties
配置文件。如果未找到该文件,系统将使用 JDK 默认的日志配置,并发出如下警告:
[WARN] Can not find [logging.properties], use [%JRE_HOME%/lib/logging.properties] as default!
1
# 2. 解决方案
在项目中添加自定义的
logging.properties
配置文件:- 将配置文件放置在
src/main/resources
或者类路径下的其他位置。 - 这样可以避免系统使用 JDK 默认的日志配置,并提供自定义的日志设置。
- 将配置文件放置在
引入第三方日志框架:
- 推荐使用 Log4j、Logback 或者 Slf4j 等日志框架,这些框架的日志配置文件可以替代 JDK Logging 的配置,从而避免上述警告。
使用 Hutool 提供的 Console 日志:
- 在新版 Hutool 中,如果没有找到
logging.properties
配置文件,Hutool 将自动跳过 JDK Logging,并使用内置的 Console 日志实现,直接在命令行中打印日志。
- 在新版 Hutool 中,如果没有找到
# 3. 配置示例
# 在项目中添加 logging.properties
在 src/main/resources
目录下添加一个 logging.properties
文件,示例如下:
# 控制台日志输出级别
handlers= java.util.logging.ConsoleHandler
# 日志级别
.level= INFO
# 控制台日志配置
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
# SimpleFormatter 格式化输出配置
java.util.logging.SimpleFormatter.format = [%1$tF %1$tT] [%4$s] %5$s %n
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
该配置将日志级别设置为 INFO,并通过 SimpleFormatter
格式化日志输出,格式为 [日期 时间] [日志级别] 日志内容
。
# 使用第三方日志框架(以 Logback 为例)
引入 Logback 依赖(示例为 Maven 配置):
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
1
2
3
4
5
2
3
4
5
在 src/main/resources
中添加 logback.xml
配置文件,示例如下:
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 4. 实际开发中的应用场景
- 多环境日志配置:在开发、测试、生产环境中使用不同的日志级别和输出位置(如控制台、文件、远程服务器)。
- 日志统一管理:通过使用第三方日志框架(如 Log4j、Slf4j),可以在大项目中统一管理日志输出,方便排查问题和分析日志。
- 避免日志冗余输出:自定义
logging.properties
可以精确控制哪些日志信息需要输出,减少不必要的日志冗余。
# 5. Hutool 日志工具使用示例
在项目中使用 Hutool 的日志系统,可以通过 LogFactory
创建日志对象:
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
public class LogExample {
// 获取日志对象
private static final Log log = LogFactory.get();
public static void main(String[] args) {
log.info("这是一条信息日志");
log.warn("这是一条警告日志");
log.error("这是一条错误日志");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 6. 更多配置文件模板
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08