簡體   English   中英

在Ubuntu上記錄Tomcat6

[英]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級別並關閉調試垃圾郵件,而無需將其從代碼中刪除。

幾種方式:

  1. 使用System#setOut()更改stdout的目標,最后也更改stderr。

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

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

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

     <Context swallowOutput="true"> 

    仍然沒有真正推薦。 使用stdout / stderr而不是logger是一種不好的做法。 此外,這將使用特定於webapp的日志來混亂Tomcat的日志文件。 但如果這正是你所追求的......

  3. 用一個像(當前遺留的) log4j或其后繼者slf4j這樣的全功能記錄器替換所有stdout / stderr調用,這使您可以在配置記錄信息,記錄目標,日志記錄格式等方面獲得高度自由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM