以编程方式配置 Jetty Logger,使用具有构造函数依赖项的 Logger

Programmatically configure Jetty Logger, using a Logger with constructor dependencies

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

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

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

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

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

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

Jetty 6 上的日志基础结构无法执行您想要执行的操作。

备注:

  • Jetty 6 早在 2010 年就停产了。
  • Jetty 7 和 Jetty 8 在 2014 年停产。
  • 只有 Jetty 9 是最新的、稳定的,并且推荐在开放的互联网上用于生产。

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

另请参阅 Jetty 9 Logging Documentation 了解更多示例。

如何在代码中执行此操作。

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

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