2010-07-22 61 views
1

使用ubuntu和tomcat6作爲我的服務器。當我調用servlet或jsp頁面時,「記錄器」(System.out.println())登錄到服務器/ var/log/syslog的系統日誌中。我怎樣才能改變這一點,服務器將寫入一個自己的日誌文件,如catalina.out?在Ubuntu上記錄Tomcat6

問題是我的系統日誌中沒有換行符(我在system.out中使用過\ n),所以看起來真的很「髒」。

回答

2

你會想看看log4j的

http://logging.apache.org/log4j/1.2/manual.html

,並建立一個log4j.properties會做你想要做的事。

通常,你不想使用System.out.println()..一切都應該通過log4j。因此,像

logger.debug("whatever i am debugging"); 

logger.warn("danger!"); 

這樣你就可以改變你的log4j的級別,並關閉調試垃圾郵件,而不必從代碼中刪除。

+0

究竟是什麼即時尋找:)非常感謝你 – Benni 2010-07-23 17:05:18

2

幾種方法:

  1. 更改使用System#setOut()標準輸出的目的地,最終也標準錯誤。

    System.setOut(new PrintStream(new File("/new.log"))); 
    

    但是,不建議這樣做。不要這樣做。使用記錄器。

  2. 配置webapp上下文以吞下輸出。將<Context>元素的swallowOutput設置爲true。這會將所有stdout/stderr重定向到Tomcat的日誌文件。

    <Context swallowOutput="true"> 
    

    還是沒有真正推薦。使用stdout/stderr而不是記錄器是一種不好的做法。而且,這會使Tomcat的日誌文件與webapp特定的日誌混亂。但是,如果這正是你追求的...

  3. 通過像(目前傳統)一fullworthy記錄log4j或其繼任slf4j它給你一個高自由度的配置更換所有標準輸出/標準錯誤調用記錄的信息,記錄目的地,記錄格式等等。

相關問題