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
相关产品推荐
相关产品推荐

