• 关于rocketmq 中日志文件路径的配置


    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

    rocketmq 中的数据和日志文件默认都是存储在user.home路径下面的,往往我们都需要修改这些路径到指定文件夹以便管理。

    服务端日志

    网上搜索rocketmq日志存储路径的修改,一堆都是写着要把源码拉下来,用rocketmq_home全局替换user.home,然后再配置rocketmq_home变量。既然都是变量的替换,指定user.home的位置不就行了吗?

    rocketmq是java编写的,也就是可以指定启动参数,按照上面那个思路我们只要在rocketmq启动的时候指定启动参数就行了。
    在conf文件夹下,可以看到有3个logback日志配置文件,这三个配置文件对应的也是runbrokernamesrvtools3个脚本。修的对应脚本的启动参数即可。

    由于namesrv不需要启动参数,所以我们只要指定另外两个加如下启动参数即可

    set "JAVA_OPT=%JAVA_OPT% -Duser.home=D:\Soft\rocketmq"
    
    • 1

    修改完后重启rocketmq就能看到指定路径下有两个文件夹,store文件夹是存储数据的,logs文件夹是存储日志的。

    这样服务端的日志和数据的配置就完成了。

    客户端配置

    客户端连接rocketmq会在用户目录产生一个rocketmq_client.log日志,如果需要是可以修改的,这里就拿rocketmq-dashboard项目举例。

    客户端日志配置有两种方式:

    logUseSlf4j

    如果项目中日志框架用的是logback的话可以使用这种方式,这种方式更灵活,可以自由配置日志格式

    logUseSlf4j方式修改配置需要2步:

    1. 修改启动类main方法
    public static void main(String[] args) {
       System.setProperty(ClientLogger.CLIENT_LOG_USESLF4J,"true");
       SpringApplication.run(App.class, args);
    }
    
    • 1
    • 2
    • 3
    • 4
    1. 修改logback.xmlapplication.yml 配置文件
    • application.yml 中加入如下rocketmq的日志存储路径
    rocketmq:
      client:
        logPath: D:\Soft\rocketmq
    
    • 1
    • 2
    • 3
    • 修改logback.xml`文件

    logback.xml文件名修改为 logback-spring.xml,并修改xml里面的内容,加入如下代码:

    
    <springProperty scope="context" name="rocketmq_client_log_dir" source="rocketmq.client.logPath"/>
    
    
    <appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<file>${rocketmq_client_log_dir}/logs/rocketmqlogs/rocketmq_client.logfile>
    	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    		<fileNamePattern>${rocketmq_client_log_dir}/history/rocketmq_client.%d{yyyyMMdd}.%i.logfileNamePattern>
    
    		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    			<maxFileSize>104857600maxFileSize>
    		timeBasedFileNamingAndTriggeringPolicy>
    
    		
    		<maxHistory>3maxHistory>
    	rollingPolicy>
    	<encoder charset="UTF-8">
    		<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%npattern>
    	encoder>
    appender>
    
    
    <logger name="RocketmqClient" additivity="false">
    	<level value="warn" />
    	<appender-ref ref="RocketmqClientAppender"/>
    logger>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    配置logRoot

    这种方式使用起来比较简单项目启动参数中加入如下启动参数即可

    -Drocketmq.client.logRoot=D:\Soft\store
    
    • 1

    或者在项目中采用某种方式只要把rocketmq.client.logRoot参数放入到系统参数中就行,比如:

    public static void main(String[] args) {
    //        -Drocketmq.client.logRoot=D:\Soft\store
        System.setProperty(ClientLogger.CLIENT_LOG_ROOT,"D:\\Soft\\store");
        SpringApplication.run(App.class, args);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这样客户端的日志就会在指定路径下生成了。

    总结

    rocketmq 中不管是服务端还是客户端的日志配置都是在类org.apache.rocketmq.client.log.ClientLogger中,通过ClientLogger可以发现rocketmq日志的参数都是加入到系统属性中去的,所以我们只要修改对应的系统属性就可以修改rocketmq的日志配置了。感兴趣的可以去看看源码探索更多的可能。

  • 相关阅读:
    【精讲】vue框架 利用脚手架实现购物车(含添加、删除、存储、清空数据、全选or单选、tap栏切换)内含详细注释
    【Redis】散列表(Hash)和列表(List)的运用和理解以及Hash和List应用场景对比详解
    JSP session的生命周期简介说明
    echart 仪表盘实现指针的渐变色及添加图片
    视频语音转文字怎么操作更快速?这个方法大家都在用
    运营小能手看过来,龙蜥社区招募 5 名校园大使(另兑换功能上线啦)
    环境变量简单解释
    【Image captioning】Meshed-memory transformer在自定义数据集的训练与调试
    数组和对象的扩展运算符
    【tio-websocket】8、T-IO对半包和粘包的处理
  • 原文地址:https://blog.csdn.net/qq_39654841/article/details/127307299