程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

  • 克隆

  • 类型转换

  • 日期时间

  • IO流相关

  • 工具类

  • 语言特性

  • JavaBean

  • 集合类

  • Map

  • Codec编码

  • 文本操作

  • 注解

  • 比较器

  • 异常

  • 数学

  • 线程和并发

  • 图片

  • 网络

  • 源码编译

  • 配置文件

  • 日志

    • 日志工厂 - `LogFactory`
    • 解决日志警告问题
      • 1. 问题背景
      • 2. 解决方案
      • 3. 配置示例
        • 在项目中添加 logging.properties
        • 使用第三方日志框架(以 Logback 为例)
      • 4. 实际开发中的应用场景
      • 5. Hutool 日志工具使用示例
      • 6. 更多配置文件模板
    • 静态调用日志 - StaticLog
  • 缓存

  • JSON

  • 加密解密

  • DFA查找

  • HTTP客户端

  • 定时任务

  • 扩展

  • 切面

  • 脚本

  • Office文档操作

  • 系统调用

  • 图形验证码

  • 网络Socket

  • JWT

  • Hutoll
  • 日志
scholar
2024-08-20
目录

解决日志警告问题

# 解决日志警告问题

# 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. 解决方案

  1. 在项目中添加自定义的 logging.properties 配置文件:

    • 将配置文件放置在 src/main/resources 或者类路径下的其他位置。
    • 这样可以避免系统使用 JDK 默认的日志配置,并提供自定义的日志设置。
  2. 引入第三方日志框架:

    • 推荐使用 Log4j、Logback 或者 Slf4j 等日志框架,这些框架的日志配置文件可以替代 JDK Logging 的配置,从而避免上述警告。
  3. 使用 Hutool 提供的 Console 日志:

    • 在新版 Hutool 中,如果没有找到 logging.properties 配置文件,Hutool 将自动跳过 JDK Logging,并使用内置的 Console 日志实现,直接在命令行中打印日志。

# 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

该配置将日志级别设置为 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

在 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

# 4. 实际开发中的应用场景

  1. 多环境日志配置:在开发、测试、生产环境中使用不同的日志级别和输出位置(如控制台、文件、远程服务器)。
  2. 日志统一管理:通过使用第三方日志框架(如 Log4j、Slf4j),可以在大项目中统一管理日志输出,方便排查问题和分析日志。
  3. 避免日志冗余输出:自定义 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

# 6. 更多配置文件模板

  1. Hutool 官方 logging.properties 配置模板 (opens new window)
  2. Hutool 其他日志框架的配置文件模板 (opens new window)
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
日志工厂 - `LogFactory`
静态调用日志 - StaticLog

← 日志工厂 - `LogFactory` 静态调用日志 - StaticLog→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式