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