解決問題 ActiveMQ (1)

教學目標

初步了解 ActiveMQ 記錄檔的設定,以利解決系統維運管理的問題。

重點概念

首先 ActiveMQ 主要是訊息傳遞和整合式的伺服器,其主是採用 Log4j 的記錄檔套件,相關設定主要是在「conf」目錄中的「log4j.properties」設定檔。

接著 ActiveMQ 的記錄檔預設是以 RollingFileAppender 記錄檔的儲存方式為主,其主要是以 MaxFileSize 設定一個記錄檔的最大大小,當超過記錄檔最大大小時,就會產生多個記錄檔,此時會在記錄檔名稱後面加上 .1、.2、… 等資訊。此外 MaxBackupIndex 設定若為 5,則代表最大記錄檔數量為 5 個,透過這個個限制能夠避免隨著記錄檔產生越來越多導致硬碟空間不足的問題發生,所以若我們 MaxFileSize 設為 1024KB 和 MaxBackupIndex 設為 5 ,則記錄檔將僅會佔 1,024KB * 5 = 5,120KB 的大小,至於相關設定如下所示。

1
2
3
4
5
6
7
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.file=${activemq.base}/data/activemq.log
log4j.appender.logfile.maxFileSize=1024KB
log4j.appender.logfile.maxBackupIndex=5
log4j.appender.logfile.append=true
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d | %-5p | %m | %c | %t%n

再來我們除了使用 RollingFileAppender 記錄檔的儲存方式之外,更能夠使用 DailyRollingFileAppender 記錄檔的儲存方式,其主要是按照日期進行記錄檔的儲存,我們主要將 RollingFileAppender 改為 DailyRollingFileAppender ,並且透過 DataPattern 設定記錄檔名稱的格式,請參考下表:

格式 說明
‘.’yyyy-MM’.log’ 每月
‘.’yyyy-ww’.log’ 每週
‘.’yyyy-MM-dd’.log’ 每天
‘.’yyyy-MM-dd-a’.log’ 每天兩次
‘.’yyyy-MM-dd-HH’.log’ 每小時
‘.’yyyy-MM-dd-HH-mm’.log’ 每分鐘

請注意此方式並不支援 maxFileSize 和 maxBackupIndex 設定,因此雖然能夠根據時間查詢記錄檔,但是卻無法限制記錄檔的大小和數量,相關設定如下所示。

1
2
3
4
5
6
7
8
9
#log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.file=${activemq.base}/data/activemq.log
#log4j.appender.logfile.maxFileSize=1024KB
#log4j.appender.logfile.maxBackupIndex=5
log4j.appender.logfile.datePattern='_'yyyy-MM-dd'.log'
log4j.appender.logfile.append=true
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d | %-5p | %m | %c | %t%n

最後不論是 RollingFileAppender 或 DailyRollingFileAppender 儲存方式皆具有共同的設定檔皆有許多與記錄檔共同選項值,請參考下表:

選項 說明
log4j.appender.logfile.file 主要是設定記錄檔儲存的位置。
log4j.appender.logfile.append 主要是設定是否新增輸出至記錄檔中。
log4j.appender.logfile.layout 主要是設定輸出至記錄檔資訊的格式化配置類型。
log4j.appender.logfile.layout..ConversionPattern 主要是設定輸出至記錄檔資訊的格式化樣式。

總結 ActiveMQ 主要是採用 Log4j 套件產生輸出的記錄檔,因此我們能夠根據 ActiveMQ 系統維運管理的問題透過 Log4j 套件相關選項的設定進行解決。

相關資源