【问题标题】:Changing log files location dynamically with SLF4J and independently of logging framework使用 SLF4J 动态更改日志文件位置,并且独立于日志框架
【发布时间】:2014-02-11 18:48:05
【问题描述】:

有什么方法可以使用 SLF4J 仅在运行时设置我的日志文件位置并且独立于日志框架

因为我已经看到其他提出解决方案的帖子,但它们是针对特定框架的,无论是 logbak 还是 log4j。

【问题讨论】:

  • 我认为不可能。顾名思义,SLF4J 是日志框架的门面,它的目标不是能够配置这些框架......

标签: java logging log4j slf4j logback


【解决方案1】:

没有。日志文件的位置是具体附加程序配置的一部分。 SLF4J 不知道在将日志事件交给它使用的绑定之后会发生什么 - 而且它也不应该尝试干预。

由于任何应用程序在任何时候都应该只使用一个日志记录实现,所以仍然应该只有一个位置来配置日志文件位置,所以我很难看到这个问题。在日志外观或实现中配置该位置是否重要?或者您是否真的在考虑提供一个根位置,每个实现都应该从该根位置相对定义自己的文件(这可能是一个有用的想法,但仍然不可能)?

【讨论】:

  • 我们在多个客户端上安装了多个项目,并且并非所有项目的日志都在同一个目录中,所以我的想法是将位置保存在数据库中,这样当我们发布新的版本我们不必记住更改配置文件上的目录位置。
  • @balizeiro 那么不同版本的部署应该登录到不同的文件吗?可以使用Sifting Appender 配置一次(在该示例中只需考虑version 而不是userId)。这可能就是您对已经找到的特定于框架的解决方案的意思,但据我了解,它最接近您想要实现的目标。
  • 不是不同的版本,而是不同的客户端登录到不同的位置。所以我试图避免的是每当我在客户端上进行新安装时都必须更改配置文件
  • @balizeiro 只要您在客户端之间具有某种区分属性(并且您需要任何方式),就应该可以制定出没有的 logback 或 log4j 配置为每个客户更改。当然,除非每个客户端的位置不同并且完全任意,但是(假设的)基于 slf4j 的解决方案同样是不可能的。
猜你喜欢
  • 1970-01-01
  • 2014-12-27
  • 2018-02-07
  • 2015-04-15
  • 2015-07-22
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多