You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tinylog2生成错误日志但未生成/维护调试日志问题排查

tinylog2 日志异常排查思路

1. 修正多Writer配置的语法错误

tinylog2 配置多个Writer时,必须为每个Writer指定唯一标识(如writer1、writer2),重复使用writer前缀会导致后一个配置覆盖前一个,这是debug日志不生成的核心原因。

修正后的配置示例:

# Debug 日志 Writer
writer1       = rolling file
writer1.file  = logs/debug/debug_{date: yyyy-MM-dd}_{count}.log
writer1.charset  = UTF-8
writer1.buffered = true 
writer1.backups  = 100
writer1.convert  = gzip 
writer1.writingthread = true
writer1.level = debug
writer1.format = {date: HH:mm:ss.SSS} {class}.{method}() {level}: {message}

# Error 日志 Writer
writer2       = rolling file
writer2.file  = logs/error/error_{date: yyyy-MM-dd}_{count}.log
writer2.charset  = UTF-8
writer2.buffered = true 
writer2.backups  = 100
writer2.convert  = gzip 
writer2.writingthread = true
writer2.level = error
writer2.format = {date: HH:mm:ss.SSS} {class}.{method}() {level}: {message}

2. 统一配置文件路径,避免加载冲突

tinylog2 加载配置的优先级为:系统属性指定的配置 > src/main/resources/tinylog.properties > src/main/java/tinylog.properties。同时在两个目录放置配置会导致生效文件不符合预期,建议只保留src/main/resources/下的配置文件。

3. 验证Logger实例与日志级别匹配

  • 确保代码中使用的是org.tinylog.Logger,而非其他日志框架的Logger类,混用会导致配置失效。
  • tinylog默认根级别为info,若未全局开启debug级别,debug日志会被过滤。可在配置文件中添加level = debug,确保debug级别的日志能被处理。

4. 检查日志目录的权限与路径

  • 确认logs/debug/和logs/error/目录存在,且运行程序的用户拥有读写权限(权限不足会静默失败,无日志文件生成)。
  • 尝试使用绝对路径配置writer.file(如/project/logs/debug/debug_{date: yyyy-MM-dd}_{count}.log),避免相对路径因工作目录不同导致解析错误。

5. 启用tinylog内部调试日志

启动程序时添加JVM参数:-Dtinylog.debug=true,输出tinylog自身的初始化、配置加载、日志事件处理过程,直接定位问题节点。

6. 排查缓冲写入的影响

开启buffered = true后,日志会先存入缓冲区,仅在缓冲区满或程序正常退出时刷入文件。若程序异常终止,debug日志可能未写入磁盘。可临时设置buffered = false测试,确认是否为缓冲导致的问题。

内容的提问来源于stack exchange,提问作者JackPark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:43:17