2012-04-04 51 views
2

正如我在標題中提到的,我的slf4j tomcat日誌記錄配置存在問題。事情是,雖然我可以將catalina.out轉換爲像日常appender這樣的不同文件,但是catalina.out文件本身仍在繼續增長,我無法弄清楚原因。Tomcat日誌記錄catalina.out正在不斷增加

順便說一句,我已經使用我的應用程序的日誌文件,以便使用slf4j logger.info調試和任何其他功能,但是我仍然需要catalina.out來從控制檯上看到正在發生的事情。這就是爲什麼我需要同時繼續使用catalina.out和myApplication.log。

這裏是我的tomcat記錄下TOMCAT_HOME性能/ conf目錄

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.org.apache.juli.FileHandler 

1catalina.org.apache.juli.FileHandler.level = FINE 
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
1catalina.org.apache.juli.FileHandler.prefix = catalina. 

2localhost.org.apache.juli.FileHandler.level = FINE 
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
2localhost.org.apache.juli.FileHandler.prefix = localhost. 

3manager.org.apache.juli.FileHandler.level = FINE 
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
3manager.org.apache.juli.FileHandler.prefix = manager. 

4host-manager.org.apache.juli.FileHandler.level = FINE 
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
4host-manager.org.apache.juli.FileHandler.prefix = host-manager. 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 


############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler 
+1

你問的是錯誤的問題。正確的問題是爲什麼首先將任何東西寫入catalina.out。當Tomcat啓動和停止時,該文件應該會看到一些條目。其他任何事情都是問題的表徵。 – 2012-04-04 18:54:03

+0

你說得對!我正在研究爲什麼它的行爲如此.. – Javatar 2012-12-04 09:44:11

回答

2

Tomcat的這一政策如下:

它不應該是一個問題,因爲沒有什麼應該被打印到 標準輸出因爲你正在使用一個日誌包

至於我我不同意他們導致大部分的實時開發人員將「DO」日誌記錄到控制檯,作爲日誌框架appender/handlers之一,用於開發時間調試目的(例如,只是爲了在IDE控制檯上看到日誌輸出)。

這裏是我使用的解決方案...

設置你的日誌框架寫東西到標準輸出上你的開發/分期/生產環境。 這將保持catalina.out非常小,只需使用直接標準輸出寫入(適用於log4j,logback等寫入)的基本信息。 因爲如果你有一些直接的標準輸出寫入,你將需要用記錄器替換它們。

正如我上面所說的,在開發IDE(Eclipse,IDEA或其他任何你使用的)的時候寫標準輸出對於在開發者控制檯中看到這些日誌是有用的。

這裏是你如何調整所有以的logback配置(但log4j的完美的作品,我相信其他日誌框架):

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
     <level>${my.console.level}</level> 
    </filter> 
    <encoder> 
     <pattern>%d %-5p [%c{0}] %m%n</pattern> 
    </encoder> 
</appender> 

於是我就用

<level>${my.console.level}</level> 

指定日誌記錄級別爲控制檯appender。

然後只通過-Dmy.console.level = OFF爲您的專用環境(dev,staging,prod)上的jvm啓動禁用寫入標準輸出。 在IDE中使用-Dmy.console.level = ALL

基本上就是這樣。您也可以使用這種方法來控制您的記錄器日誌級別。

相關問題