<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
catalina.out其實是tomcat的標準輸出(stdout)和標準出錯(stderr),這是在tomcat的啟動指令碼裡指定的,如果沒有修改的話stdout和stderr會重定向到這裡。所以我們在應用裡使用System.out列印的東西都會到這裡來。另外,如果我們在應用裡使用其他的紀錄檔框架,設定了向Console輸出的,則也會在這裡出現。比如以logback為例,如果設定ch.qos.logback.core.ConsoleAppender則會輸出到catalina.out裡。
這兩個紀錄檔都是通過logging.properties設定的(預設情況下,啟動指令碼裡指定了java.util.logging.config.file和java.util.logging.manager兩個變數)。一個典型的logging.properties可能如下所示:
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 1catalina.org.apache.juli.FileHandler.level = INFO 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 2localhost.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost. java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
這個檔案大致的意思是,root輸出到catalina和console。而這裡的catalina按照設定對應的是catalina.{yyyy-MM-dd}.log,這裡的console最終會輸出到catalina.out。這就是我們看到catalina.{yyyy-MM-dd}.log和catalina.out的紀錄檔很多都是一樣的原因。
組態檔中還有一個localhost,所有logname或parent logname為org.apache.catalina.core.ContainerBase.[Catalina].[localhost]的都會輸出到localhost.{yyyy-MM-dd}.log檔案。而這個logname又代表著什麼呢?在tomcat中有一個server.xml的組態檔,其中有這麼一個片段:
<Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false"> </Host> </Engine>
我們可以這麼簡單的理解: 一個Tomcat程序對應著一個Engine,一個Engine下可以有多個Host(Virtual Host),一個Host裡可以有多個Context,比如我們常常將應用部署在ROOT下還是webapps裡其他目錄,這個就是Context。
這其中Engine對應著tomcat裡的StandardEngine類,Host對應著StandardHost類,而Context對應著StandardContext。這幾個類都是從ContainerBase派生。這些類裡打的一些跟應用程式碼相關的紀錄檔都是使用ContainerBase裡的getLogger,而這個這個logger的logger name就是: org.apache.catalina.core.ContainerBase.[current container name].[current container name]...
而我們一個webapp裡listener, filter, servlet的初始化就是在StandardContext裡進行的,比如ROOT裡有一個listener初始化出異常了,列印紀錄檔則logger name是org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]。這其中Catalina和localhost是上面xml片段裡的Engine和Host的name,而[/]是ROOT對應的StandardContext的name。所以listener, filter, servlet初始化時的紀錄檔是需要看localhost.{yyyy-MM-dd}.log這個紀錄檔的。比如現在我們使用Spring,Spring的初始化我們往往是使用Spring提供的一個listener進行的,而如果Spring初始化時因為某個bean初始化失敗,導致整個應用沒有啟動,這個時候的異常紀錄檔是輸出到localhost中的,而不是cataina.out中。所以有的時候我們應用無法啟動了,然後找catalina.out紀錄檔,但最後也沒有定位根本原因是什麼,就是因為我們找的紀錄檔不對。但有的時候catalina.out裡也有我們想要的紀錄檔,那是因為我們的應用或使用的一些元件自己捕獲了異常,然後將其列印了,這個時候如果恰好這些紀錄檔被我們設定成輸出到console,則這些紀錄檔也會在catalina.out裡出現了。
那麼總結起來,catalina.out即標準輸出和標準出錯,所有輸出到這兩個位置的都會進入catalina.out,這裡包含tomcat執行自己輸出的紀錄檔以及應用裡向console輸出的紀錄檔。catalina.{yyyy-MM-dd}.log是tomcat自己執行的一些紀錄檔,這些紀錄檔還會輸出到catalina.out,但是應用向console輸出的紀錄檔不會輸出到catalina.{yyyy-MM-dd}.log。localhost.{yyyy-MM-dd}.log主要是應用初始化(listener, filter, servlet)未處理的異常最後被tomcat捕獲而輸出的紀錄檔,而這些未處理異常最終會導致應用無法啟動。
最後想想,這裡分幾個紀錄檔檔案其實不利於問題查詢,為啥不乾脆都輸出到catalina.out裡呢?我想tomcat作為通用容器本身,可能考慮到Engine下有多個Host,每個Host的紀錄檔還是要輸出到不同的檔案。而實際中我們往往是單容器,單Host,甚至是隻有一個ROOT的Context。
一般是用log4j按照業務劃分,對一些比較重要的業務會單獨打到一個檔案,方便容易定位問題,,其他的預設會打到catalina。
到此這篇關於Tomcat中catalina.out 和 catalina.log的區別和用途詳解的文章就介紹到這了,更多相關Tomcat catalina.out catalina.log內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45