2017-08-04 174 views
0

我們正在研究將應用程序從WebSphere遷移到JBoss EAP 6.4。我在互聯網上讀到,自JBoss EAP 6.x以來,JBoss使用自己的日誌框架,稱爲JBoss日誌記錄,而不是之前的log4j。如何使用JBoss獨立記錄JBoss服務器特定日誌使用log4j記錄日誌和應用程序特定日誌?

我們已經有一個log4j.properties文件用於應用程序特定的日誌,它根據日誌級別(log-error.log,log-info.log,...)將日誌存儲在單獨的文件中,但實際上它們是還記錄在控制檯和server.log文件中。

在一方面,我們希望只與我們現有的log4j.properties配置文件來記錄應用程序日誌,還可以防止他們在server.log中和控制檯登錄過。

另一方面,我們希望服務器特定的日誌記錄在JBoss Logging框架中,所以在server.log和控制檯中。

綜上所述,我們想從去:

application logs + server logs => server.log/console + separate file logs 

要這樣:

application logs => seperate file logs 
server logs => server.log/console 

是否有人知道如何實現這一目標? 有沒有人以類似的方式配置JBoss服務器?

謝謝你,

問候。

回答

0

如果在WAR/WEB-INF/classesEAR/META-INF中包含log4j.proeprties文件,它應該可以正常工作。如果您在所有地方看到特定於應用程序的日誌記錄,那麼我的猜測是您的log4j.properties文件中配置了一個控制檯appender。

+0

刪除我的log4j屬性文件中的控制檯appender後,它仍然不起作用。有任何想法嗎 ? –

+0

它是WAR還是EAR部署?你使用log4j作爲你的日誌框架嗎? –

+0

這是一個EAR部署。是的我們是。我們使用log4j和一個自制的日誌記錄層,它調用log4j日誌記錄方法和其他日誌信息聚合。 –

0

不明白爲什麼,但log4j的也是標準輸出日誌,以便JBoss的日誌捕獲這些日誌,並再次追加它們到JBoss控制檯和server.log的是這樣的:

2017-08-08 15:14:20,304 INFO [stdout] <<My log4j log message>>

我成功的那一刻,以防止這種通過添加代碼standalone.xml文件:

<logger category="stdout" use-parent-handlers="false"> 
    <level name="OFF"/> 
</logger> 

這不是一個不好的做法?

謝謝,

+0

如果有什麼寫入'System.out',那麼它不會被記錄。這將是唯一的問題。 –

+0

不要認爲這會是一個問題,在我們的應用程序中使用System.out非常令人沮喪,但是如果您認爲我可以在log4j.properties文件中聲明stdout記錄器嗎?像_log4j.logger.stdout = INFO,outAppender_?只是爲了確保我們不會丟失日誌並找到System.out調用來刪除它們。 –

+0

可能不是。 JBoss EAP使用記錄器支持的流替換'System.setOut()'和'System.setErr()'。這是爲了防止有人寫入其中一個流並丟棄控制檯流。 –