概述
log4j通过activeMQ远程记录日志设计配置
一、安装ActiveMQ
首先去http://activemq.apache.org/download.html 下载较新版本5.4.2release, 解压
apache-activemq-5.4.2-bin.zip (或者apache-activemq-5.4.2-bin.tar.gz)目录如下:
+bin (windows下面的bat和unix/linux下面的sh)
+conf (activeMQ配置目录,包含最基本的activeMQ配置文件)
+data (默认是空的)
+docs (相关文档)
+example (几个例子)
+lib (activemMQ使用到的lib)
连接安全配置:
将如下配置
<plugins> <!-- Configure authentication; Username, passwords and groups --> <simpleAuthenticationPlugin anonymousAccessAllowed="false"> <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="admins"/> <users> </users> </simpleAuthenticationPlugin> </plugins>
Copy至conf/activemq.xml中,放在
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
的下面(这是简单的用户名、密码的认证方式)!
用户名、密码的可在conf/credentials.properties中配置
可以使用binactivemq.bat(activemq) 启动,如果一切顺利,你就会看见类似下面的信息:
Listening for connections at: tcp://127.0.0.1:61616
二、测试安装的ActiveMQ
由于ActiveMQ是一个独立的jms provider,所以我们不需要其他任何第三方服务器就可以马上做我们的测试了.编译example/src目录下面的程序 ProducerTool/ConsumerTool 是JMS参考里面提到的典型应用,Producer产生消息,Consumer消费消息,而且这个例子还可以加入参数帮助你测试刚才启动的本地 ActiveMQ或者是远程的ActiveMQ
ProducerTool broker的地址,默认的是tcp://localhost:61616 [true|flase] 是否使用topic,默认是false [subject] subject的名字,默认是TOOL.DEFAULT [durabl] 是否持久化消息,默认是false [messagecount] 发送消息数量,默认是10 [messagesize] 消息长度,默认是255 [clientID] durable为true的时候,需要配置clientID [timeToLive] 消息存活时间 [sleepTime] 发送消息中间的休眠时间 [transacte] 是否采用事务 ConsumerTool broker的地址,默认的是tcp://localhost:61616 [true|flase] 是否使用topic,默认是false [subject] subject的名字,默认是TOOL.DEFAULT [durabl] 是否持久化消息,默认是false [maxiumMessages] 接受最大消息数量,0表示不限制 [clientID] durable为true的时候,需要配置clientID [transacte] 是否采用事务 [sleepTime] 接受消息中间的休眠时间,默认是0,onMeesage方法不休眠 [receiveTimeOut] 接受超时 我们可以这样使用:
先启动activeMQ,再打开两个命令窗口,都进入D:activemqexamplesrc,一个运行:ant consumer,一个运行:ant producer,如果成功发送/接收了消息就OK了。
ActiveMQ5版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。
admin:http://127.0.0.1:8161/admin/
demo:http://127.0.0.1:8161/demo/
三、在工程中导入支持activeMQ的jar包
在pom.xml文件中新增activeMQ依赖包。
<dependency> <groupId>org.apache.activemq.tooling</groupId> <artifactId>maven-activemq-memtest-plugin</artifactId> <version>5.4.2</version>
</dependency>
四、配置log4j文件,使其可以通过activeMQ向远程JMS服务发送日志
在log4j.xml日志文件中增加JMSAppender 。
<appender name="JMS" class="org.apache.log4j.net.JMSAppender"> <param name="Threshold" value="info" /> <param name="InitialContextFactoryName" <param name="ProviderURL" value="tcp://localhost:61616" /> <param name="userName" value="system" /> <param name="password" value="manager" /> <param name="TopicBindingName" value="EZRD.logTopic " /> <param name="TopicConnectionFactoryBindingName" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory" /> value="ConnectionFactory" /> </appender>
五、配置jndi和初始化属性文件
在src/resouce目录下新增jndi.properties文件
##发送端和接收端可以通过EZRD.logTopic这个名字建立发送和接收消息 topic.EZRD.logTopic=EZRD.logTopic
在dbconfig目录下新增jms.properties属性文件
#JMS服务地址 jms_provider_url=tcp://localhost:61616
#用户名
jms_userName=system
#密码
jms_password=manager
#主题名
jms_topic_binding_name=EZRD.kk
#日志存放目录 jms_ezrd_logs=D:\ezrdlogs
六、启动接收端主程序JmsLogReceiver
java JmsLogReceiver
JmsLogReceiver.java
七、查看生成的日志文件,每天产生一个日志文件。
在D:\ezrdlogs 目录下生成当天的日志文件,如:
2011-08-18.log
注:使用jms需要注意的问题
1、 在activemq.xml配置文件中可以修改amq的内存限制,如:
<policyEntry topic=">" producerFlowControl="true" memoryLimit="100mb">
这里memoryLimit="100mb"表示topic的内存限制为100M,producerFlowControl="false"表示关闭流量控制,如果不关闭流量控制,在消息量发生累积时,amq会主动控制流量,减少消息的生产。
2、 不要频繁的建立和关闭连接
JMS使用长连接方式,一个程序,只要和JMS服务器保持一个连接就可以了,不要频繁的建立和关闭连接。频繁的建立和关闭连接,对程序的性能影响还是很大的。这一点和jdbc还是不太一样的。
3、 Connection的start()和stop()方法代价很高
JMS的Connection的start()和stop()方法代价很高,不能经常调用。我们试用的时候,写了个jms的connection pool,每次将connection取出pool时调用start()方法,归还时调用stop()方法,然而后来用jprofiler发现,一般的cpu时间都耗在了这两个方法上。
4、 start()后才能收消息
Connection的start()方法调用后,才能收到jms消息。如果不调用这个方法,能发出消息,但是一直收不到消息。不知道其它的jms服务器也是这样。
5、 显式关闭Session
如果忘记了最后关闭Connection或Session对象,都会导致内存泄漏。这个在我测试的时候也发现了。本来以为关闭了Connection,由这个Connection生成的Session也会被自动关闭,结果并非如此,Session并没有关闭,导致内存泄漏。所以一定要显式的关闭Connection和Session。
6、 对Session做对象池
对Session做对象池,而不是Connection。Session也是昂贵的对象,每次使用都新建和关闭,代价也非常高。而且后来我们发现,原来Connection是线程安全的,而Session不是,所以后来改成了对Session做对象池,而只保留一个Connection。
最后
以上就是寂寞纸鹤为你收集整理的log4j通过ActiveMQ远程记录日志设计配置 log4j通过activeMQ远程记录日志设计配置 一、安装ActiveMQ 首先去http://activemq.apache.org/download.html 下载较新版本5.4.2release, 解压 apache-activemq-5.4.2-bin.zip (或者apache-activemq-5.4.2-bin.tar.gz)目录如下: +bin (windows下面的bat和unix/linux下面的sh) 的全部内容,希望文章能够帮你解决log4j通过ActiveMQ远程记录日志设计配置 log4j通过activeMQ远程记录日志设计配置 一、安装ActiveMQ 首先去http://activemq.apache.org/download.html 下载较新版本5.4.2release, 解压 apache-activemq-5.4.2-bin.zip (或者apache-activemq-5.4.2-bin.tar.gz)目录如下: +bin (windows下面的bat和unix/linux下面的sh) 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复