【问题标题】:Programmatically configure Jetty Logger, using a Logger with constructor dependencies使用具有构造函数依赖项的 Logger 以编程方式配置 Jetty Logger
【发布时间】:2016-02-10 20:23:27
【问题描述】:

Programmatically configure Jetty's logger 类似,我将 Jetty 用作独立应用程序,并希望使用代码而不是配置文件来配置记录器。

我知道我可以通过设置属性来提供自定义日志类,例如:System.setProperty("org.eclipse.jetty.util.log.class", "com.example.JettyLog");

但是,我想使用的日志类需要一个构造函数依赖项(日志文件名),如果有一种方法可以为 Jetty 提供一个已经构建的实现,它会简单得多。例如:

org.eclipse.jetty.util.log.Logger logger = new MyCustomLogger( logFile );
// and then somehow provide the logger instance to Jetty

有谁知道这是否可行以及如何实现?

【问题讨论】:

    标签: logging jetty


    【解决方案1】:

    org.mortbay.log.Logger 是旧的 Jetty 6(或更早版本)类。

    Jetty 6 上的日志基础设施无法完成您想做的事情。

    注意事项:

    • Jetty 6 早在 2010 年就已停产(EOL(End of Life))。
    • Jetty 7 和 Jetty 8 于 2014 年停产。
    • 只有 Jetty 9 是最新的、稳定的,建议在开放互联网上用于生产。

    如果您想为 Jetty 制作自定义记录器,那么可以在 Jetty 9 上实现。但即使在那里,通常也更容易挂钩到 Slf4jLog 层并创建各种日志记录基础设施。

    有关更多示例,另请参阅Jetty 9 Logging Documentation

    如何在代码中做到这一点。

    注意:请注意,日志记录在 JVM 中的初始化非常早。您的初始化也应该尽早进行,否则您将无法正确替换 Logger 实现。

    日志的这种早期初始化在日志基础设施中很常见,这就是为什么所有(我的意思是所有)日志库都具有在拉技术中配置的首次加载初始化(而不是在您想要的推送技术中)利用)。每个日志库都会从日志配置和基础设施本身(通过 xml、属性文件、json、INI、系统属性等)获取其配置,包括文件名等内容。

    【讨论】:

    • 您有使用 Jetty 9 的预构建 Logger 实例的示例吗?我在该文档中找不到任何使用它的内容。
    • org.eclipse.jetty.util.Log.setLog 在上面的答案中应该是org.eclipse.jetty.util.log.Log.setLog
    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2011-09-15
    • 2017-03-03
    • 1970-01-01
    相关资源
    最近更新 更多