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

时间:2015-03-02 21:52:36

标签: logging jetty

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

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

但是,我想要使用的日志类需要构造函数依赖项(日志文件名),如果有一种方法可以为Jetty提供已构造的实现,那么它会更简单。 E.g:

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

有谁知道这是否可能以及如何?

1 个答案:

答案 0 :(得分:0)

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

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

注意:

  • Jetty 6在2010年是EOL(End of Life)。
  • Jetty 7和Jetty 8于2014年获得EOL。
  • 只有Jetty 9是最新的,稳定的,并建议在开放的互联网上进行生产使用。

如果你想为Jetty制作一个自定义记录器,那么它可以在Jetty 9上使用。但即便如此,它通常更容易挂钩到Slf4jLog层并创建各种日志记录基础设施。

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

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

注意:请注意,JVM中很早就会初始化Logging。您的初始化也应该尽早进行,否则您将无法正确替换Logger实现。

这种早期的日志记录初始化对于日志记录基础结构很常见,这就是为什么所有(我的意思是所有)日志库都具有以pull技术配置的on-first-load初始化(不是你想要的push技术)使用)。每个日志库都将从日志记录配置和基础结构本身(通过xml,属性文件,json,INI,系统属性等)进行配置,包括文件名等。