繁体   English   中英

添加SSL配置后,log4j无法与Jetty一起使用

[英]log4j not working with Jetty after adding SSL configuration

我正在尝试使用SSL运行Jetty(v9)服务器(以便仅通过HTTPS进行访问)。 使用纯HTTP,一切运行正常。 然后,我更改了启动器类,使其看起来像这样:

PropertyConfigurator.configure("war/WEB-INF/log4j.properties");
Server server = new Server();

WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar("war");
server.setHandler(webapp);

HttpConfiguration https = new HttpConfiguration();
https.addCustomizer(new SecureRequestCustomizer());

SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath("keystore.jks");
sslContextFactory.setKeyStorePassword("<password>");
sslContextFactory.setKeyManagerPassword("<password>");

ServerConnector sslConnector = new ServerConnector(server,
        new SslConnectionFactory(sslContextFactory, "http/1.1"),
        new HttpConnectionFactory(https));
sslConnector.setPort(443);
server.setConnectors(new Connector[] { sslConnector });

LOG.info("Starting server on port 443");
server.start();
server.join();

我还运行了此命令以生成密钥库文件:

keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048

现在启动服务器时,一切正常。 我使用log4j(v1.2.17-和slf4j)进行日志记录时,将上述日志消息输出到目标文件(如log4j.properties中所指示)。 但是,当我在浏览器中访问Web服务器时,日志记录停止,并向控制台输出以下错误:

log4j:ERROR A "org.apache.log4j.RollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
log4j:ERROR [sun.misc.Launcher$AppClassLoader@178b0f9] whereas object of type 
log4j:ERROR "org.apache.log4j.RollingFileAppender" was loaded by [WebAppClassLoader=8317419@7ee9eb].
log4j:ERROR Could not instantiate appender named "filer".
log4j:WARN No appenders could be found for logger (ie.search4less.quickbooks.servlet.AppServlet).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

...并且每次Servlet处理新请求时,都会在控制台中重复此操作。 我的每个servlet都使用一个静态块来初始化log4j,例如:

static {
    PropertyConfigurator.configure("war/WEB-INF/log4j.properties");
}

我的log4j.properties看起来像这样:

log4j.rootLogger=INFO, filer

log4j.appender.filer=org.apache.log4j.RollingFileAppender
log4j.appender.filer.layout=org.apache.log4j.PatternLayout
log4j.appender.filer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r [%t] %-5p %c %x - %m%n
log4j.appender.filer.File=./logs/quickbooks.log
log4j.appender.filer.MaxFileSize=1MB
log4j.appender.filer.MaxBackupIndex=9
log4j.appender.filer.append=true

就像我说的那样,在我将新的SSL配置代码添加到服务器启动器类之前,一切工作都很好,但是我不知道出了什么问题。

我知道了 问题实际上与SSL配置完全无关。 在添加这些SSL配置更改之间,我将一个包含所有依赖项(包括log4j和slf4j jars)的lib目录移动到WEB-INF中。 那引起了某种冲突。 从那里删除他们解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM