【问题标题】:Changing the threshold for an appender in Grails在 Grails 中更改附加程序的阈值
【发布时间】:2015-01-13 01:30:21
【问题描述】:

在 Grails 中,日志记录是在 Config.groovy 文件中设置的。这些属性可以通过外部属性文件(由 grails.config.locations 定义)覆盖。

我的问题是:如何通过属性文件更改特定附加程序的阈值?这个属性名是什么?

我尝试过以下几种变化:

log4j.appenders.rollingApplicationAppender.threshold=org.apache.log4j.Level.DEBUG

但这并没有成功。

【问题讨论】:

    标签: grails logging configuration


    【解决方案1】:

    您似乎对 log4j 和日志记录有根本的误解。您要求做的事情无法完成,我会解释原因。

    日志记录基于两个概念。 LoggersAppenders。记录器,接收消息,检查这些消息并根据它们的配置确定是否应该将消息发送到附加程序。 Thresholdlogger 的属性。因此,当消息到达时,它首先由logger 评估,然后再发送到appenderappender 反过来理解如何将消息写入适当的输出并且不理解threshold

    希望这可以帮助您进一步了解日志记录的工作原理,并引导您完成您想做的事情。

    更新

    正如 cmets 中指出的那样,appenders 确实能够在 logger 将消息识别为有效后应用自己的 threshold。这使他们能够丢弃消息(常见的用途是在生产中丢弃 TRACE 以获取控制台输出)。考虑到这一点,您在问题中的示例就是这样做的。为appender 设置threshold 但您没有看到appender 的任何输出,因为您的logger 首先过滤消息。

    【讨论】:

    • 我也是这么想的,但是几乎每个 Appender 的基类都是 org.apache.log4j.AppenderSkeleton 并且它有一个方法 public void setThreshold(Priority threshold) (Level extends Priority) 对于某些人来说原因不在界面中。
    • 啊,很好地抓住了伯特。看起来appender本身有一个阈值设置,用于额外的过滤级别。例如。一旦消息通过了记录器阈值,附加程序就有机会在附加之前评估级别。我将更新答案以表明这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2015-06-02
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多