rocketmq 日志问题

今天使用rocketmq,消费者每消费一条消息都会产生info日志

搜索无果,查看源代码

 1 public class ClientLogger {
 2     public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot";
 3     public static final String CLIENT_LOG_MAXINDEX = "rocketmq.client.logFileMaxIndex";
 4     public static final String CLIENT_LOG_LEVEL = "rocketmq.client.logLevel";
 5     private static Logger log;
 6
 7     static {
 8         log = createLogger(LoggerName.CLIENT_LOGGER_NAME);
 9     }
10
11     private static Logger createLogger(final String loggerName) {
12         String logConfigFilePath =
13             System.getProperty("rocketmq.client.log.configFile",
14                 System.getenv("ROCKETMQ_CLIENT_LOG_CONFIGFILE"));
15         Boolean isloadconfig =
16             Boolean.parseBoolean(System.getProperty("rocketmq.client.log.loadconfig", "true"));
17
18         final String log4JResourceFile =
19             System.getProperty("rocketmq.client.log4j.resource.fileName", "log4j_rocketmq_client.xml");
20
21         final String logbackResourceFile =
22             System.getProperty("rocketmq.client.logback.resource.fileName", "logback_rocketmq_client.xml");
23
24         String clientLogRoot = System.getProperty(CLIENT_LOG_ROOT, "${user.home}/logs/rocketmqlogs");
25         System.setProperty("client.logRoot", clientLogRoot);
26         String clientLogLevel = System.getProperty(CLIENT_LOG_LEVEL, "INFO");
27         System.setProperty("client.logLevel", clientLogLevel);
28         String clientLogMaxIndex = System.getProperty(CLIENT_LOG_MAXINDEX, "10");
29         System.setProperty("client.logFileMaxIndex", clientLogMaxIndex);
30
31         if (isloadconfig) {
32             try {
33                 ILoggerFactory iLoggerFactory = LoggerFactory.getILoggerFactory();
34                 Class classType = iLoggerFactory.getClass();
35                 if (classType.getName().equals("org.slf4j.impl.Log4jLoggerFactory")) {
36                     Class<?> domconfigurator;
37                     Object domconfiguratorobj;
38                     domconfigurator = Class.forName("org.apache.log4j.xml.DOMConfigurator");
39                     domconfiguratorobj = domconfigurator.newInstance();
40                     if (null == logConfigFilePath) {
41                         Method configure = domconfiguratorobj.getClass().getMethod("configure", URL.class);
42                         URL url = ClientLogger.class.getClassLoader().getResource(log4JResourceFile);
43                         configure.invoke(domconfiguratorobj, url);
44                     } else {
45                         Method configure = domconfiguratorobj.getClass().getMethod("configure", String.class);
46                         configure.invoke(domconfiguratorobj, logConfigFilePath);
47                     }
48
49                 } else if (classType.getName().equals("ch.qos.logback.classic.LoggerContext")) {
50                     Class<?> joranConfigurator;
51                     Class<?> context = Class.forName("ch.qos.logback.core.Context");
52                     Object joranConfiguratoroObj;
53                     joranConfigurator = Class.forName("ch.qos.logback.classic.joran.JoranConfigurator");
54                     joranConfiguratoroObj = joranConfigurator.newInstance();
55                     Method setContext = joranConfiguratoroObj.getClass().getMethod("setContext", context);
56                     setContext.invoke(joranConfiguratoroObj, iLoggerFactory);
57                     if (null == logConfigFilePath) {
58                         URL url = ClientLogger.class.getClassLoader().getResource(logbackResourceFile);
59                         Method doConfigure =
60                             joranConfiguratoroObj.getClass().getMethod("doConfigure", URL.class);
61                         doConfigure.invoke(joranConfiguratoroObj, url);
62                     } else {
63                         Method doConfigure =
64                             joranConfiguratoroObj.getClass().getMethod("doConfigure", String.class);
65                         doConfigure.invoke(joranConfiguratoroObj, logConfigFilePath);
66                     }
67
68                 }
69             } catch (Exception e) {
70                 System.err.println(e);
71             }
72         }
73         return LoggerFactory.getLogger(LoggerName.CLIENT_LOGGER_NAME);
74     }
75
76     public static Logger getLog() {
77         return log;
78     }
79
80     public static void setLog(Logger log) {
81         ClientLogger.log = log;
82     }
83 }

所有日志名定义

public class LoggerName {
    public static final String FILTERSRV_LOGGER_NAME = "RocketmqFiltersrv";
    public static final String NAMESRV_LOGGER_NAME = "RocketmqNamesrv";
    public static final String BROKER_LOGGER_NAME = "RocketmqBroker";
    public static final String CLIENT_LOGGER_NAME = "RocketmqClient";
    public static final String TOOLS_LOGGER_NAME = "RocketmqTools";
    public static final String COMMON_LOGGER_NAME = "RocketmqCommon";
    public static final String STORE_LOGGER_NAME = "RocketmqStore";
    public static final String STORE_ERROR_LOGGER_NAME = "RocketmqStoreError";
    public static final String TRANSACTION_LOGGER_NAME = "RocketmqTransaction";
    public static final String REBALANCE_LOCK_LOGGER_NAME = "RocketmqRebalanceLock";
    public static final String ROCKETMQ_STATS_LOGGER_NAME = "RocketmqStats";
    public static final String COMMERCIAL_LOGGER_NAME = "RocketmqCommercial";
    public static final String FLOW_CONTROL_LOGGER_NAME = "RocketmqFlowControl";
    public static final String ROCKETMQ_AUTHORIZE_LOGGER_NAME = "RocketmqAuthorize";
    public static final String DUPLICATION_LOGGER_NAME = "RocketmqDuplication";
    public static final String PROTECTION_LOGGER_NAME = "RocketmqProtection";
    public static final String WATER_MARK_LOGGER_NAME = "RocketmqWaterMark";
}

配置

rocketmq.client.log.loadconfig

rocketmq.client.log.configFile

日志级别

<Logger name="RocketmqClient" level="WARN"/>

问题解决

时间: 2024-08-27 01:45:19

rocketmq 日志问题的相关文章

基于 raft 协议的 RocketMQ DLedger 多副本日志复制设计原理

目录 1.RocketMQ DLedger 多副本日志复制流程图 1.1 RocketMQ DLedger 日志转发(append) 请求流程图 1.2 RocketMQ DLedger 日志仲裁流程图 1.3 RocketMQ DLedger 从节点日志复制流程图 2.RocketMQ DLedger 多副本日志复制实现要点 2.1 日志编号 2.2 追加与提交机制 2.3 日志一致性如何保证 上一篇 源码分析 RocketMQ DLedger(多副本) 之日志复制(传播) ,可能有不少读者朋

Linux安装RocketMQ

本文介绍Linux安装RocketMQ. 1.RocketMQ简介 RocketMQ是阿里巴巴中间件开发的分布式消息系统,曾经经历过很多阿里巴巴大型项目的实际检验.在去年已经正式捐献给Apache开源基金会,成为孵化项目.今年正式升级成为了apache的顶级项目. RocketMQ官网地址为:http://rocketmq.apache.org/,感兴趣的可以多多查看官网文档. 2.准备工作 2.1 安装环境 本文所安装的RocketMQ为4.2.0版本,Linux系统版本为CentOS 7.2

RocketMq单机节点安装

1.下载 下载地址:http://rocketmq.apache.org/release_notes/执行命令: wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip unzip rocketmq-all-4.6.0-bin-release.zip 2.创建RocketMQ存储文件的目录,执行如下命令: #存储RocketMQ数据文件目录 mkdir /u

Java常见框架和工具

集成开发工具(IDE):Eclipse.MyEclipse.Spring Tool Suite(STS).Intellij IDEA.NetBeans.JBuilder.JCreator JAVA服务器:tomcat.jboss.websphere.weblogic.resin.jetty.apusic.apache 负载均衡:nginx.lvs web层框架:Spring MVC.Struts2.Struts1.Google Web Toolkit(GWT).JQWEB 服务层框架:Sprin

分布式开放消息系统(RocketMQ)的原理与实践

分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一款高性能.高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的? 关键特性以及其实现原理 一.顺序消息 消息有序指的是可以按照消息的发送顺序来消费.例如:一笔订单产生了 3 条消息,分别是订单创建.订单付款.订单完成.消费时,要按照顺序依次消费才有意

转:Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能 (阿里中间件团队博客)

from: http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/ 引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. 那么,消息中间件性能究竟哪家强? 带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka.RabbitM

RocketMQ与Kafka对比(18项差异)

转自:https://github.com/alibaba/RocketMQ/wiki/rmq_vs_kafka 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在

消息中间件 RocketMQ源码解析:事务消息

关注微信公众号:[芋艿的后端小屋]有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认真回复.甚至不知道如何读源码也可以请教噢. 新的源码解析文章实时收到通知.每周更新一篇左右. 1. 概述 2. 事务消息发送 2.1 Producer 发送事务消息 2.2 Broker 处理结束事务请求 2.3 Broker 生成

双RocketMq集群的搭建

一.双Master RocketMq集群的搭建 1.服务器环境: 序号 IP 用户名 角色 模式 1 192.168.211.128 root nameServer1,brokerServer1 Master1 2 192.168.211.129 root nameServer2,brokerServer2 Master1 2.添加hosts信息 vim /etc/hosts IP NAME 192.168.211.128 rocketmq-nameserver1 192.168.211.128