使用jta多数据源报错: com.atomikos.recovery.LogException: Log already in use?

如果两个或多个springboot项目,都通过atomikos配置了多数据源,且放在同一Tomcat下运行,报错:

com.atomikos.recovery.LogException: Log already in use? tmlog in D:\eclipse\transaction-logs\

出错原因:

atomikos默认日志打印:tomcat\transaction-logs\tmlog.lck  和  tomcat\transaction-logs\tmlog0.log

(如果在eclipse中启动,则打印在D:\eclipse\transaction-logs\)

导致多项目共用同一日志文件,前面的项目将会锁定文件,后面启动的项目将会无法写入。

解决思路:

  • 修改默认日志文件名称;
  • 修改默认日志文件路径;
  • 关闭日志打印。

具体设置org.springframework.boot.jta.atomikos.AtomikosProperties.class中的属性即可

解决方案(选一即可):

在application.properties或其他指定的属性文件中加入如下代码即可。

  • 修改日志文件名称(建议名称最好与项目名保持一致)

spring.jta.atomikos.properties.log-base-name=test

  • 修改日志文件路径 。/表示项目根目录下,目录加上每个服务名区分不同服务

spring.jta.atomikos.properties.log-base-dir=./mes-onsitemgr/log

 

 

posted @ 2022-06-04 21:01  江南小镇的一缕阳光  阅读(565)  评论(0)    收藏  举报