Java logback如何监视配置文件

Java logback如何监视配置文件,java,log4j,logback,Java,Log4j,Logback,我听说Logback并没有使用单独的线程来监视像log4j这样的配置文件,以避免关机问题。但我找不到任何关于他们如何实施的材料。在2007年的logback邮件列表中有一些讨论。任何人都可以指出一些关于该机制、优点和缺点的材料?谢谢他们使用了一个涡轮过滤器来包装所有的日志调用。每16次日志调用,将检查计时器是否已过,如果已过,将检查配置文件是否已修改 因此,他们通过在调用日志方法时占用一点时间来避免单独的线程。进行了一些挖掘,但没有找到所有内容。据我所知,log4j的文件监视线程可能会导致应用程

我听说Logback并没有使用单独的线程来监视像log4j这样的配置文件,以避免关机问题。但我找不到任何关于他们如何实施的材料。在2007年的logback邮件列表中有一些讨论。任何人都可以指出一些关于该机制、优点和缺点的材料?谢谢

他们使用了一个涡轮过滤器来包装所有的日志调用。每16次日志调用,将检查计时器是否已过,如果已过,将检查配置文件是否已修改


因此,他们通过在调用日志方法时占用一点时间来避免单独的线程。

进行了一些挖掘,但没有找到所有内容。据我所知,log4j的文件监视线程可能会导致应用程序环境中出现问题。所以我认为在pojo程序中仍然是安全的,对吗?这都是关于停止线程的。如果它是守护进程线程,那么它在普通Java应用程序中是安全的。谢谢,@marko topolnik。我有一个关于logback的后续问题。感谢您的回复。我有2个env env1:log调用者直接调用logback。env2:队列将日志调用程序和日志线程解耦。log语句可以是案例1。log.debug(“这是%s”,s);案例2。日志调试;如果没有LogGuard,我无法理解在上述任何情况下,在调用logback方法堆栈之前,如何计算参数字符串“s”。这是由于在单个JVM中共享堆造成的吗?始终计算所有参数。占位符语法的唯一好处是不必生成最终字符串,这意味着不必对所有参数调用
toString
。在许多实际情况下,这确实是一个很大的好处。谢谢,@marko topolnik。在阅读java规范后,我并不真正理解param计算。以下是我对一般java param计算的理解:1)所有param都将被计算为方法的类型,“参数表达式(可能如上所述重写)现在被计算以产生参数值”在规范中,logback参数化argu方法中没有s1+s2+s3,这似乎破坏了延迟计算的好处。2) 是否因为评估过程仅计算参考值而不是值,并按参考传递给方法?