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)

连接安全配置:

将如下配置

Copy至conf/activemq.xml中,放在

的下面(这是简单的用户名、密码的认证方式)!

用户名、密码的可在conf/credentials.properties中配置

可以使用bin\activemq.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:\activemq\example\src,一个运行: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依赖包。

org.apache.activemq.toolingmaven-activemq-memtest-plugin5.4.2

四、配置log4j文件,使其可以通过activeMQ向远程JMS服务发送日志

在log4j.xml日志文件中增加JMSAppender 。

value="ConnectionFactory" />

五、配置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的内存限制,如:

这里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。

linux activemq 日志,log4j通过ActiveMQ远程记录日志设计配置相关推荐

  1. linux kdump日志在哪里,kdump启动失败如何配置

    本案环境:[root@bright ~]# cat /etc/redhat-release && uname -r CentOS release 6.6 (Final) 2.6.32- ...

  2. Spring学习总结(13)——Spring+Log4j+ActiveMQ实现远程记录日志

    应用场景 随着项目的逐渐扩大,日志的增加也变得更快.Log4j是常用的日志记录工具,在有些时候,我们可能需要将Log4j的日志发送到专门用于记录日志的远程服务器,特别是对于稍微大一点的应用.这么做的优 ...

  3. linux activemq 打印日志,Log4j.xml配置日志按级别过滤并将指定级别的日志发送到ActiveMQ...

    目标:将debug,info级别的日志输出到本地文件,将warn,error级别的日志输出到ActiveMQ. 说明:本文还是使用之前的两个项目:Product和Logging. 经过一番搜索后,发现 ...

  4. Log4j.xml配置日志按级别过滤并将指定级别的日志发送到ActiveMQ

    为什么80%的码农都做不了架构师?>>>    在之前的一篇博客<Spring+Log4j+ActiveMQ实现远程记录日志--实战+分析>的评论中,有同学提到这种方式应 ...

  5. log4j linux如果日志目录不存在,Java日志库学习笔记

    (未完成,待修改) 一.安装Log4j log4j的库文件可以在官方网站下载: 二.log4j.properties的目录搜索规则 在src/目录下创建一个log4j.properties文件,即LC ...

  6. log4j中将SocketAppender将日志内容发送到远程服务器

    1.服务端配置 1)服务端配置文件log4j-server.properties #Define a narrow log category. A category like debug will p ...

  7. linux C++ 环境下的ActiveMQ学习

    ActiveMQ 1.概述 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Pr ...

  8. activemq主从配置_使用ActiveMQ –具有故障转移协议的“主/从”配置

    activemq主从配置 介绍 ActiveMQ代理往往是企业中消息传递基础结构的核心部分. 此消息传递基础结构的高度可用性和可伸缩性至关重要. 请阅读此链接 ,以了解有关创建经纪人网络以支持各种用例 ...

  9. 使用ActiveMQ –具有故障转移协议的“主/从”配置

    介绍 ActiveMQ代理往往是企业中消息传递基础结构的核心部分. 此消息传递基础结构的高度可用性和可伸缩性至关重要. 请阅读此链接 ,以了解有关创建经纪人网络以支持各种用例的更多信息. Active ...

最新文章

  1. 2、String相关问题
  2. (详细)Hibernate框架的搭建,Hibernate的CRUD操作(一)
  3. 【Linux系统编程】 文件描述符的复制:dup()和dup2()
  4. echarts 堆叠柱状图3d效果_【python可视化】:pyecharts:柱形图、堆叠条形图、极坐标堆叠柱形图、极坐标堆叠分类条形图...
  5. WPF 右下角弹窗的简单实现
  6. C++ —— C++引用
  7. tgc 什么意思 tgt_TGT的完整形式是什么?
  8. OAuth 2.0——授权服务开发笔记(一)
  9. Vue.JS学习笔记
  10. 成功解决生意参谋中transit-id和加密数据date
  11. 织梦php集成环境安装包,常用PHP运行环境一键安装包
  12. JS修改链接地址实现页面动态跳转的方法
  13. js 拉勾网效果_js仿拉勾网首页穿墙广告效果
  14. ThinkPad T420 clover引导安装黑苹果(x220和T520也适用)
  15. LEAK: ByteBuf.release() was not called before it‘s garbage-collected
  16. oracle查询谁修改了数据ip,查询oracle特定表修改的用户及IP信息
  17. 标签无效 /zabbix_export/date: YYYY-MM-DDThh:mm:ssZ 预计。
  18. 关于app的闪退问题
  19. 盘点来自工业界的GPU共享方案
  20. linux 大牛博客,大牛

热门文章

  1. Visual C++ 图像处理类库CxImage源代码
  2. P2617 Dynamic Rankings 动态主席树
  3. P1681 最大正方形II (动态规划)
  4. POJ 3461 Oulipo
  5. jq默认选中每项第一个
  6. TCP相关面试题总结
  7. 并查集:POJ No1703 Find them, Catch them
  8. JS键盘KEYCODE值参考
  9. 第十三章 第六节 本章小结
  10. 上班一族“黑话”辞典大曝光