首页 > 解决方案 > 回滚多个服务

问题描述

我正在尝试将多个服务的日志写入同一个文件,但我给出的滚动策略不起作用,尝试使用基于时间和基于大小的滚动。事情是我的服务正在同时运行并将日志写入本地目录中的同一文件。当尝试通过单个服务写入日志时,它按预期工作。请帮助我尝试使用不同的滚动策略解决此问题。

Appender to log to file​ ${LOG_FILE} 在控制台日志中显示的最低日志级别 INFO ${LOG_PATH}/archived/log_%d{dd-MM-yyyy}_%i.log 10KB

标签: javaloggingspring-logback

解决方案


我在使用 Log4j 1.x 时有过与您类似的经历,然后我当时(大约 5-6 年前)调试了一个 appender,并得出以下结论:

我认为您不能将来自多个服务的数据写入同一个文件。换句话说,Logging 框架通常假设只有它可以更改文件。在某些操作系统(Windows)中,如果其他进程重命名/更改当前文件,它甚至会停止写入文件。

当然,它只是一个代码,您可以创建一个更复杂的附加程序,它可能会使其工作,但坦率地说,我认为这不值得付出努力。

所以我建议写入不同的文件,其中文件名可以以包含资源 pid 的方式生成。这种方法的缺点是,如果进程死亡然后重新运行,on-one 将处理旧资源。

另一种方法(有点相似) - 为每个服务创建一个包含日志的文件夹,以便它们根据文件夹获得不同的日志(即使这些文件夹中的文件将具有相同的名称)。


推荐阅读