[英]Logging Tomcat6 on Ubuntu
我使用ubuntu和tomcat6作為我的服務器。 當我調用servlet或jsp頁面時,“logger”(System.out.println())會登錄到服務器/ var / log / syslog的syslog中。 我怎樣才能改變這一點,服務器將在像catalina.out這樣的自己的日志文件中寫入?
問題是我的syslog中沒有換行符(我在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()
更改stdout的目標,最后也更改stderr。
System.setOut(new PrintStream(new File("/new.log")));
但不建議這樣做。 不要這樣做。 使用記錄器。
配置webapp上下文以吞下輸出。 將<Context>
元素的swallowOutput
設置為true
。 這會將所有stdout / stderr重定向到Tomcat的日志文件。
<Context swallowOutput="true">
仍然沒有真正推薦。 使用stdout / stderr而不是logger是一種不好的做法。 此外,這將使用特定於webapp的日志來混亂Tomcat的日志文件。 但如果這正是你所追求的......
用一個像(當前遺留的) log4j或其后繼者slf4j這樣的全功能記錄器替換所有stdout / stderr調用,這使您可以在配置記錄信息,記錄目標,日志記錄格式等方面獲得高度自由。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.