日志,是軟件運行過程中,對各類操作中重要信息的記錄。 日志跟蹤,不管對於怎么樣的項目來說,都是非常重要的一部分,它關系到項目后期的維護和排錯,起着舉足輕重的作用。項目開發過程中,對日志的記錄規則,也將影響到改項目后期維護的難度。
在開發過程中,我們經常遇到的日志記錄方式包括有系統輸出(System.out,最基礎方式),日志框架輸出(log4J 等)和分布式日志框架輸出等。作為項目的開發者,和后期的管理者來說,對於日志的管理,除了需要知道如何進行日志輸出,還需要關注的是,項目后期對日志文件的管理。
日志追蹤第一步(web容器日志)
在此分享下自己在學習過程中的經歷,本人雖然說是學計算機的,可是學校的Java課程並沒怎么學習,大部分的Java知識都是在課后自學的。在最先開始,本人並沒有接觸到所謂的日志框架,哪怕是在搭建SSH項目的過程中,知道有這樣的框架,知道三大框架都采用了這樣的日子框架進行日志記錄,可是還是沒有主動的是去使用,所以在最先開始的時候,本人還是使用最原始的System.out,來進行日志的追蹤。在項目開發的工程中,遇到了問題,就System.out一下,看看輸出的是啥,然后再排錯,我覺得應該不止是我一個人,采用的是這樣的老辦法吧。這樣的問題來了,出了問題去哪找?
其實,不論我們有沒有日志輸出,只要我們采用的是成型的web容器,web容器就會對一些必要的信息進行日志的記錄。在此以最常用的tomcat為例。
tomcat服務器的日志文件配置保存在$CATALINA_HOME/conf目錄下的loggin.properties中(在此不做詳解),而對應的日志文件,則保留在$CATALINA_HOME/logs目錄下。Tomcat容器默認按照日期進行日志的保存,每天都會產生對應於當天的日志文件,其中包括:容器輸出、管理日志、訪問日志等。我們常見的tomcat啟動輸出,就對應的在容器日志文件中。對於一些tomcat的錯誤信息,可以通過這些日志文件進行排查




對於日志輸出的規則和保留的目錄,不同的web容器采用的方式不同,因此需要根據對應的web容器進行日志查找,在此不再舉例了
日志追蹤第二步(System.out在哪里)
在此說一下,編程過程中,除了System.out以外,當異常拋出或者是說異常處理的e.printstrack,也都采用的是out輸出。從編程角度上看,提出盡量規范化編程,減少System.out和e.printstrack的輸出,可是,當這一部分不可避免的時候,就得好好的利用它
作為常用的web容器,tomcat對系統輸出有自己的一套管理方法,根據不同管理系統,有不同的配置。
在Linux下,tomcat會為對應的實例創建一個.out文件,放在$CATALINA_HOME/logs目錄下,方便后期的排錯使用。然而,該文件默認不能自動分割,在沒有配置的情況下,該文件會不斷的增大,日久天長,或許等到需要排錯的時候,該文件的大小可以以G為單位了。所以,在配置完tomcat實例之后,建議修改一下啟動文件,讓.out文件隨着日期的變化自增。
具體的配置如下:
vim catalina.sh
找到catalina.out所在處,將其改為catalina.$(date +%Y-%m-%d) .out(注意date之后的空格)


改完之后,重啟tomcat,會發現,tomcat會根據日期的不同,動態的創建.out文件


在Windows下,啟動tomcat通常需要啟動一個控制台,同時該控制台需要一直開着,tomcat的SYstem.out 也默認為控制台輸出。也就是說,開發者所寫的System.out,還有異常輸出,都會打印在控制台上面。所以如果出了問題,找控制台就行了。。
但是,這一種方式顯然非常麻煩,Windows控制台顯示查看是有限制的,同時也沒有持久化的文件保存下來。所以,需要通過配置tomcat的配置文件,來實現與Linux同樣的效果。
1、打開startup.bat文件,找到call "%EXECUTABLE%" start %CMD_LINE_ARGS%, 改為call "%EXECUTABLE%" run %CMD_LINE_ARGS% 。


2、打開catalina.bat文件,在4處 %ACTION% 后面加上 >> %CATALINA_HOME%\logs\catalina.out 。重啟tomcat,tomcat的logs文件夾下就會出現catalina.out文件了。


按照上面的方法,同樣存在着.out無限變大的問題。如果想要其按照日期進行配置可以通過將catalina.out改為catalina.%date:~0,4%-%date:~5,2%-%date:~8,2%.out,重啟即可


至此,關於tomcat的日志追蹤,整理完畢。其中部分資源來自網絡。