使用ubuntu和tomcat6作爲我的服務器。當我調用servlet或jsp頁面時,「記錄器」(System.out.println())登錄到服務器/ var/log/syslog的系統日誌中。我怎樣才能改變這一點,服務器將寫入一個自己的日誌文件,如catalina.out?在Ubuntu上記錄Tomcat6
問題是我的系統日誌中沒有換行符(我在system.out中使用過\ n),所以看起來真的很「髒」。
使用ubuntu和tomcat6作爲我的服務器。當我調用servlet或jsp頁面時,「記錄器」(System.out.println())登錄到服務器/ var/log/syslog的系統日誌中。我怎樣才能改變這一點,服務器將寫入一個自己的日誌文件,如catalina.out?在Ubuntu上記錄Tomcat6
問題是我的系統日誌中沒有換行符(我在system.out中使用過\ n),所以看起來真的很「髒」。
你會想看看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的級別,並關閉調試垃圾郵件,而不必從代碼中刪除。
幾種方法:
更改使用System#setOut()
標準輸出的目的地,最終也標準錯誤。
System.setOut(new PrintStream(new File("/new.log")));
但是,不建議這樣做。不要這樣做。使用記錄器。
配置webapp上下文以吞下輸出。將<Context>
元素的swallowOutput
設置爲true
。這會將所有stdout/stderr重定向到Tomcat的日誌文件。
<Context swallowOutput="true">
還是沒有真正推薦。使用stdout/stderr而不是記錄器是一種不好的做法。而且,這會使Tomcat的日誌文件與webapp特定的日誌混亂。但是,如果這正是你追求的...
通過像(目前傳統)一fullworthy記錄log4j或其繼任slf4j它給你一個高自由度的配置更換所有標準輸出/標準錯誤調用記錄的信息,記錄目的地,記錄格式等等。
究竟是什麼即時尋找:)非常感謝你 – Benni 2010-07-23 17:05:18