Java 添加SSL配置后,log4j不使用Jetty

Java 添加SSL配置后,log4j不使用Jetty,java,ssl,https,log4j,jetty,Java,Ssl,Https,Log4j,Jetty,我正在尝试使用SSL运行Jetty(v9)服务器(因此只能通过HTTPS进行访问)。使用纯HTTP,一切都运行良好。然后我更改了我的launcher类,使其看起来像这样: PropertyConfigurator.configure("war/WEB-INF/log4j.properties"); Server server = new Server(); WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"

我正在尝试使用SSL运行Jetty(v9)服务器(因此只能通过HTTPS进行访问)。使用纯HTTP,一切都运行良好。然后我更改了我的launcher类,使其看起来像这样:

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();
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
当我现在启动服务器时,一切都很顺利。使用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如下所示:

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();
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配置代码添加到server launcher类之前,一切都很正常,但我不明白出了什么问题。

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

您的安全数据应该被记录吗?我不知道您的意思。无论我使用的是HTTP还是HTTPS,我都希望继续正常登录。我只是不明白是什么改变了我的servlet无法再登录了