与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
有谁知道这是否可能以及如何?
答案 0 :(得分:0)
org.mortbay.log.Logger
是一个旧的Jetty 6(或更早版本)。
Jetty 6上的日志记录基础结构无法执行您想要执行的操作。
注意:
如果你想为Jetty制作一个自定义记录器,那么它可以在Jetty 9上使用。但即便如此,它通常更容易挂钩到Slf4jLog
层并创建各种日志记录基础设施。
有关更多示例,另请参阅Jetty 9 Logging Documentation。
如何在代码中执行此操作。
MyCustomLogger
需要实现[org.eclipse.jetty.util.log.Logger
] MyCustomerLogger
并对其进行配置org.eclipse.jetty.util.log.Log.setLog(new MyCustomLogger( logFile ));
注意:请注意,JVM中很早就会初始化Logging。您的初始化也应该尽早进行,否则您将无法正确替换Logger实现。
这种早期的日志记录初始化对于日志记录基础结构很常见,这就是为什么所有(我的意思是所有)日志库都具有以pull技术配置的on-first-load初始化(不是你想要的push技术)使用)。每个日志库都将从日志记录配置和基础结构本身(通过xml,属性文件,json,INI,系统属性等)进行配置,包括文件名等。