tomcat:日誌配置詳解(避免日誌過多撐爆磁盤)

一,tomcat日誌配置

tomcat 對應日誌的配置文件:tomcat目錄下的/conf/logging.properties。 

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

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 = INFO
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = INFO
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.

4host-manager.org.apache.juli.FileHandler.level = INFO
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.

java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler

# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = INFO

# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = INFO

二,tomcat 日誌文件詳解

tomcat有五類日誌:catalina、localhost、manager、admin、host-manager

catalina.out
catalina.out即標準輸出和標準出錯,所有輸出到這兩個位置的都會進入catalina.out,這裏包含tomcat運行自己輸出的日誌以及應用裏向console輸出的日誌。默認這個日誌文件是不會進行自動切割的,我們需要藉助其他工具進行切割(注意:catalina.out文件如果過大會影響)

catalina.YYYY-MM-DD.log
catalina.{yyyy-MM-dd}.log是tomcat自己運行的一些日誌,這些日誌還會輸出到catalina.out,但是應用向console輸出的日誌不會輸出到catalina.{yyyy-MM-dd}.log,它是tomcat的啓動和暫停時的運行日誌,注意,它和catalina.out是裏面的內容是不一樣的。

localhost.YYYY-MM-DD.log
localhost.{yyyy-MM-dd}.log主要是應用初始化(listener, filter, servlet)未處理的異常最後被tomcat捕獲而輸出的日誌,它也是包含tomcat的啓動和暫停時的運行日誌,但它沒有catalina.2018-09-19.log日誌全。它只是記錄了部分日誌。

localhost_access_log.YYYY-MM-DD.txt
localhost_access_log.2018-09-19.txt:這個是訪問tomcat的日誌,請求時間和資源,狀態碼都有記錄。

host-manager.YYYY-MM-DD.log
host-manager.2018-09-19.log:這個估計是放tomcat的自帶的manager項目的日誌信息的,未看到有什麼重要的日誌信息。

manager.YYYY-MM-DD.log
manager.2018-09-19.log : 這個是tomcat manager項目專有的日誌文件. 

 

三,Tomcat日誌總結

 

1 Tomcat 日誌信息分爲兩類 :

一是運行中的日誌,它主要記錄運行的一些信息,尤其是一些異常錯誤日誌信息 。

二是訪問日誌信息,它記錄的訪問的時間,IP ,訪問的資料等相關信息。

 

2 訪問日誌的配置

2.1 默認 tomcat 不記錄訪問日誌,如下方法可以使 tomcat 記錄訪問日誌

編輯 catalina/conf/server.xml文件.注:catalina/conf/server.xml文件.注:{catalina} 是 tomcat 的安裝目錄

把以下的註釋 (<!-- -->) 去掉即可。

 <!--

        <Valve className="org.apache.catalina.valves.AccessLogValve"

         directory="logs"  prefix="localhost_access_log." suffix=".txt"

         pattern="common" resolveHosts="false"/>

  -->

2.2 配置tomcat 寫出更詳細的日誌

通過對 2.1 示例中 pattern 項的修改,可以改變日誌輸出的內容。

該項值可以爲: common 與 combined ,這兩個預先設置好的格式對應的日誌輸出內容如下:

common 的值: %h %l %u %t %r %s %b

combined 的值: %h %l %u %t %r %s %b %{Referer}i %{User-Agent}i

pattern 也可以根據需要自由組合, 例如 pattern="%h %l"

 

對於各fields字段的含義請參照 :

http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html 中的 Access Log Valve 項

 

3 修改Tomcat運行日誌的等級

3.1  日誌類型與級別

Tomcat 日誌分爲下面5類:

catalina 、 localhost 、 manager 、 admin 、 host-manager

每類日誌的級別分爲如下 7 種:

SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)

3.2  日誌級別的設定方法

修改 conf/logging.properties 中的內容,設定某類日誌的級別

示例:

 

設置 catalina 日誌的級別爲: FINE

1catalina.org.apache.juli.FileHandler.level = FINE

 

禁用 catalina 日誌的輸出:

1catalina.org.apache.juli.FileHandler.level = OFF

 

輸出 catalina 所有的日誌消息均輸出:

1catalina.org.apache.juli.FileHandler.level = ALL

 

 

配置完成後,記得重啓Tomcat

./shutdown.sh

./startup.sh 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章