当前位置: 首页 > web >正文

在 IntelliJ IDEA 中运行时出现“Log already in use? tmlog in ./“

原因分析

  1. ​冲突原因​​:多个服务共享同一个工作目录(项目根目录或模块目录),且都尝试写入相同命名的日志文件(tmlog)
  2. ​常见场景​​:同时运行多个微服务实例,使用 Spring Boot、Logback 等框架时容易发生

✅ 解决方案(按优先级排序)

方案1:在运行配置中设置独立工作目录(推荐)

这是最彻底的解决方式:

  1. 打开 Run/Debug Configurations
  2. 选中报错的服务配置
  3. 找到 Working directory 设置项
  4. 修改为项目子目录(如 $PROJECT_DIR$/service1-logs
  5. 勾选 Create directory 选项
  6. 同样为另一个服务设置不同目录(如 $PROJECT_DIR$/service2-logs
方案2:修改日志配置(技术型方案)

在代码层面永久解决冲突:

​Spring Boot 应用​​(application.properties):

# 服务1配置
logging.file.name=service1-tmlog.log
logging.file.path=./logs/service1# 服务2配置
logging.file.name=service2-tmlog.log
logging.file.path=./logs/service2

​Logback 配置​​(logback-spring.xml):

<configuration><!-- 为不同服务添加标识符 --><springProperty scope="context" name="serviceName" source="spring.application.name"/><appender name="FILE" class="ch.qos.logback.core.FileAppender"><!-- 动态文件名 --><file>./logs/${serviceName}-tmlog.log</file></appender>
</configuration>
方案3:通过 VM 参数临时解决

在服务的运行配置中添加参数:

  1. 打开服务配置 → Modify options
  2. 选择 Add VM options
  3. 添加:
-Dlog.file.name=service1-tmlog.log 
-Dlog.file.path=./service1-logs
方案4:修改服务启动顺序

当无法立即修改配置时:

  1. 停止所有正在运行的服务
  2. 先启动较重要的服务
  3. 等待5秒后启动第二个服务
  4. 在运行窗口中使用重启按钮 (🔄) 而非停止后启动

⚠ 特别注意项

  1. ​项目结构检查​​:

    • 确保不是多模块共享同一配置文件
    • 检查根目录下是否有 tmlog 文件遗留(删除冲突文件)
  2. ​框架特性​​:

  3. ​IDEA 2023+ 新功能​​:
    • 启用 Run in parallel 模式
    • 启用 Share terminal for parallel runs(自动创建隔离环境)

调试步骤

如果问题持续存在:

  1. 在终端执行:
lsof -nP | grep tmlog
  1. 检查文件锁持有者:
fuser tmlog
  1. 创建诊断脚本 log-check.sh
#!/bin/bash
echo "当前目录: $(pwd)"
ls -l tmlog*
ps aux | grep java | grep your-service

💡 ​​最佳实践建议​​:对于长期开发,在项目初始化时配置 logging.file.path=./logs/${spring.application.name} 可永久避免此问题。

请根据项目类型尝试最匹配的方案,通常方案1和方案2组合使用效果最佳。如果是微服务项目,建议所有服务都使用 ${spring.application.name} 作为日志路径标识。

http://www.xdnf.cn/news/13819.html

相关文章:

  • Python数据可视化艺术:社交网络关系图制作
  • parquet批量读取图片文件示例
  • 树莓派5 ubuntu 24.04 docker配置镜像Docker pull时报错:https://registry-1.docker.io/v2/
  • 机器学习与深度学习21-信息论
  • 项目名称:基于计算机视觉的夜间目标检测系统
  • map与set的模拟实现
  • ABAP零碎记录
  • 事件(Event)
  • 56、原生组件注入-原生注解与Spring方式注入
  • 录制mp4 rospy
  • 数字人分身系统源码开发功能深度解析
  • 基于算力魔方与PP-OCRv5的OpenVINO智能文档识别方案
  • CSS实现元素撑满剩余空间的5种方法
  • Linux启动流程和内核管理自我总结
  • 杭州公司一面java题目和解答
  • 2025最新版使用VSCode和CMake图形化编译调试Cuda C++程序(保姆级教学)
  • IOT集群扩容实践:问题剖析与解决策略
  • Vue 3.6前瞻:响应式性能革命与Vapor模式展望
  • c#.net code httpPost请求,携带文件
  • 更进一步深入的研究ObRegisterCallBack
  • Kotlin 协程与 ViewModel 的完美结合
  • Rust 学习笔记:处理任意数量的 future
  • SQL进阶之旅 Day 28:跨库操作与ETL技术
  • 【C++】入门题目之定义Dog类
  • 三大能力升级,为老项目重构开辟新路径
  • [SPDM]SPDM 证书链验证过程详解
  • linux安装阿里DataX实现数据迁移
  • 组合边缘提取和亚像素边缘提取
  • word表格批量转excel,提取表格数据到excel
  • 企业签名分发跟应用商城分发有什么区别