本發(fā)明涉及計算機服務(wù)器技術(shù)領(lǐng)域,具體地說是一種實用性強、基于ActiveMQ實現(xiàn)遠程記錄日志的方法。
背景技術(shù):
隨著現(xiàn)有項目的逐漸擴大,日志的增加也變得更快。Log4j是常用的日志記錄工具,在有些時候,我們可能需要將Log4j的日志發(fā)送到專門用于記錄日志的遠程服務(wù)器,特別是對于稍微大一點的應用。
目前的服務(wù)器由于較為分散,導致日志管理查看過程較為麻煩,同時日志存儲在服務(wù)器上會造成服務(wù)器存儲空間的占用,使得服務(wù)器支出成本較高。
基于此,現(xiàn)提供一種基于ActiveMQ實現(xiàn)遠程記錄日志的方法,ActiveMQ是由Apache出品的,一款最流行的,能力強勁的開源消息總線。ActiveMQ是一個完全支持JMS1.1和J2EE 1.4規(guī)范的 JMS Provider實現(xiàn),它非??焖?,支持多種語言的客戶端和協(xié)議,而且可以非常容易的嵌入到企業(yè)的應用環(huán)境中,并有許多高級功能,如果能夠?qū)⑵渑cLog4j相結(jié)合,就能夠解決上述日志存儲管理的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種實用性強、基于ActiveMQ實現(xiàn)遠程記錄日志的方法。
一種基于ActiveMQ實現(xiàn)遠程記錄日志的方法,通過配置結(jié)合Log4j和ActiveMQ,以生產(chǎn)者的方式將產(chǎn)生的日志發(fā)送到ActiveMQ的消息隊列,然后以消費者的方式監(jiān)聽消息隊列,獲取并記錄日志。
其具體實現(xiàn)過程為:
首先安裝ActiveMQ,然后啟動安裝ActiveMQ的服務(wù)器;
配置Log4j,加載log4j的jms模塊,在jms中配置ActiveMQ的tcp地址和端口,產(chǎn)生的日志通過jms發(fā)送到ActiveMQ的消息隊列;
創(chuàng)建ActiveMQ消息隊列的監(jiān)聽者,當監(jiān)聽到隊列中存在消息,立刻以消費者的方式從隊列中取出日志,并將日志輸出到本地保存。
啟動ActiveMQ服務(wù)器是指在安裝ActiveMQ后,進入到bin下對應的系統(tǒng)架構(gòu)文件夾,通過點擊對應圖標完成啟用過程。
上述ActiveMQ安裝完成后,可以對其進行監(jiān)控,具體為:打開瀏覽器,進入ActiveMQ的監(jiān)控界面,對ActiveMQ進行監(jiān)控,監(jiān)控當前存在哪些消息隊列,每個消息隊列下面存在多少消息,查看具體的消息。
本發(fā)明的一種基于ActiveMQ實現(xiàn)遠程記錄日志的方法,具有以下優(yōu)點:
本發(fā)明的一種基于ActiveMQ實現(xiàn)遠程記錄日志的方法,可以集中管理日志:可以把多臺服務(wù)器上的日志都發(fā)送到一臺日志服務(wù)器上,方便管理、查看和分析;可以減輕服務(wù)器的開銷:日志不在服務(wù)器上了,因此服務(wù)器有更多可用的磁盤空間;可以提高服務(wù)器的性能:通過異步方式,記錄日志時服務(wù)器只負責發(fā)送消息,不關(guān)心日志記錄的時間和位置,服務(wù)器甚至不關(guān)心日志到底有沒有記錄成功,實用性強,易于推廣。
附圖說明
附圖1為本發(fā)明的實現(xiàn)示意圖。
具體實施方式
下面結(jié)合附圖及具體實施例對本發(fā)明作進一步說明。
如附圖1所示,本發(fā)明提出了一種實現(xiàn)網(wǎng)站統(tǒng)計中數(shù)據(jù)收集的方法,本發(fā)明使用Spring結(jié)合了 Log4j和ActiveMQ,以生產(chǎn)者的方式將產(chǎn)生的日志發(fā)送到ActiveMQ的消息隊列,消費者的方式監(jiān)聽消息隊列,獲取并記錄日志。
項目ProjectA需要打印日志,調(diào)用Log4j來打印日志,Log4j通過JMSAppender將日志通過消息的形式發(fā)送到ActiveMQ的消息隊列QueueB,此時綁定的在消息隊列QueueB上的項目ProjectB的監(jiān)聽器發(fā)現(xiàn)日志消息,于是從ActiveMQ獲取日志消息并轉(zhuǎn)換為日志輸出。
其具體實現(xiàn)過程為:
第一步: 安裝ActiveMQ,解壓之后不需要任何的安裝配置,進入到bin下對應的系統(tǒng)架構(gòu)文件夾,雙擊activemq.bat啟用。
此外,也可以打開瀏覽器,輸入http://localhost:8161,進入ActiveMQ的監(jiān)控界面,對ActiveMQ進行監(jiān)控,可以監(jiān)控當前存在哪些消息隊列,每個消息隊列下面存在多少消息,查看具體的消息等等。
第二步:配置Log4j,主要配置log4j.properties文件,加載log4j的jms模塊,在jms中配置ActiveMQ的tcp地址和端口,這樣產(chǎn)生的日志就可以通過jms發(fā)送到ActiveMQ的消息隊列。下面是一個具體的配置實例。
log4j.rootLogger=INFO, stdout, jms
log4j.logger.org.apache.activemq=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c - %m%n
log4j.appender.jms=org.apache.log4j.net.JMSAppender
log4j.appender.jms.InitialContextFactoryName=org.apache.activemq.jndi.ActiveMQInitialContextFactory
log4j.appender.jms.ProviderURL=tcp://localhost:61616
log4j.appender.jms.TopicBindingName=logTopic
log4j.appender.jms.TopicConnectionFactoryBindingName=ConnectionFactory
關(guān)于jms的配置,只有配置正確,日志才能以消息的形式發(fā)送到ActiveMQ的隊列中。
第三步:創(chuàng)建ActiveMQ消息隊列的監(jiān)聽者,當監(jiān)聽到隊列中存在消息,立刻以消費者的方式從隊列中取出日志,并將日志輸出到本地保存。
上述具體實施方式僅是本發(fā)明的具體個案,本發(fā)明的專利保護范圍包括但不限于上述具體實施方式,任何符合本發(fā)明的一種基于ActiveMQ實現(xiàn)遠程記錄日志的方法的權(quán)利要求書的且任何所述技術(shù)領(lǐng)域的普通技術(shù)人員對其所做的適當變化或替換,皆應落入本發(fā)明的專利保護范圍。