簡體   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