java - 回滚多个服务
问题描述
我正在尝试将多个服务的日志写入同一个文件,但我给出的滚动策略不起作用,尝试使用基于时间和基于大小的滚动。事情是我的服务正在同时运行并将日志写入本地目录中的同一文件。当尝试通过单个服务写入日志时,它按预期工作。请帮助我尝试使用不同的滚动策略解决此问题。
Appender to log to file ${LOG_FILE} 在控制台日志中显示的最低日志级别 INFO ${LOG_PATH}/archived/log_%d{dd-MM-yyyy}_%i.log 10KB
解决方案
我在使用 Log4j 1.x 时有过与您类似的经历,然后我当时(大约 5-6 年前)调试了一个 appender,并得出以下结论:
我认为您不能将来自多个服务的数据写入同一个文件。换句话说,Logging 框架通常假设只有它可以更改文件。在某些操作系统(Windows)中,如果其他进程重命名/更改当前文件,它甚至会停止写入文件。
当然,它只是一个代码,您可以创建一个更复杂的附加程序,它可能会使其工作,但坦率地说,我认为这不值得付出努力。
所以我建议写入不同的文件,其中文件名可以以包含资源 pid 的方式生成。这种方法的缺点是,如果进程死亡然后重新运行,on-one 将处理旧资源。
另一种方法(有点相似) - 为每个服务创建一个包含日志的文件夹,以便它们根据文件夹获得不同的日志(即使这些文件夹中的文件将具有相同的名称)。
推荐阅读
- c - C中的跳过列表实现
- wordpress - 如何使用主机名而不是 IP 地址访问网站?
- node.js - 将值推送到猫鼬中的数组
- winapi - 如何设置 Microsoft Edge 文件关联以打开 .htm 文件?
- r - 如何使用正则表达式从 R 中的模式中提取字符串
- java - 不同类中 Typescript 中日期的自定义 JSON 解析器
- flurl - 通过响应内容类型控制?
- java - 如果输入已知,请继续询问输入
- python - 我将如何自定义 python json.dumps 将 dict 列表值转换为 str
- python - 使用 Pymssql 将具有 Null 值的记录插入 SQL Server 时出错