【问题标题】:Logging practices with multiple web applications多个 Web 应用程序的日志记录实践
【发布时间】:2011-04-22 16:56:37
【问题描述】:

我们需要在集群 glassfish 环境中托管多个 Web 应用程序。 Logback 是 Web 应用程序使用的日志框架。修改日志配置(例如日志级别)是一个我想获得一些专家意见和建议的问题。

目前我们已将 logback 配置文件放入单独的 war 文件中,原因有几个

  1. 手动将 logback.xml 放在 war 文件之外会为安装程序/升级程序添加一个额外的任务。
  2. 在未来版本的 Web 应用程序中对配置文件所做的任何修改都必须由软件升级程序负责。任何例如这种修改可能是接受日志文件位置作为 JNDI 属性。 Web 应用程序的数量增加了这项任务的复杂性。

将配置文件放在war中的缺点是很难进行任何修改。例如添加新的记录器或更改日志级别。 JMX 是 logback 支持的替代方案,但我发现它有两个问题

  1. 通过 JMX 所做的任何更改都无法保留。任何服务器重新启动都会丢失配置的更改。
  2. logback 提供的 JMX 支持不允许添加新的 appender,例如一个新的文件追加器

如果您能就我上面提到的 logback 配置文件的放置或 JMX 问题提供任何建议,我将不胜感激。

【问题讨论】:

    标签: logging jmx logback


    【解决方案1】:

    我们也遇到过类似的问题,并且不得不使用其他日志记录机制来解决——这确实会带来令人不快的权衡取舍。我刚开始使用 LogBack,但我的理解是它允许在配置文件 (http://logback.qos.ch/manual/joran.html#variableSubstitution) 中进行变量替换。我的计划是使用此功能根据需要使用系统属性路由日志,如链接示例中所示。

    至于 JMX,同意。我们广泛使用 JMX 来监控和在条件允许时对内部配置进行临时更改,但 JMX 不是进行永久更改的好选择;至少这些应该经过变更控制流程。

    我的建议:探索变量替换方法并使用 JMX 进行临时运行时调整。

    【讨论】:

    • 其实我上面提到的两个问题都不能通过变量替换来解决。丢失通过 JMX 所做的更改(例如更改记录器的日志级别)无法使用变量替换解决,也无法使用添加新附加程序的第二个问题来解决
    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2013-01-12
    • 2016-07-19
    • 2023-04-08
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多