草庐IT

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

索码理 2023-04-08 原文

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

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"

修改完后重启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. 修改logback.xmlapplication.yml 配置文件
  • application.yml 中加入如下rocketmq的日志存储路径
rocketmq:
  client:
    logPath: D:\Soft\rocketmq
  • 修改logback.xml`文件

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

<!--日志文件的存储路径-->
<springProperty scope="context" name="rocketmq_client_log_dir" source="rocketmq.client.logPath"/>

<!-- rocketmq日志 -->
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<file>${rocketmq_client_log_dir}/logs/rocketmqlogs/rocketmq_client.log</file>
	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
		<fileNamePattern>${rocketmq_client_log_dir}/history/rocketmq_client.%d{yyyyMMdd}.%i.log</fileNamePattern>

		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>104857600</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>

		<!--保留时间,单位:天-->
		<maxHistory>3</maxHistory>
	</rollingPolicy>
	<encoder charset="UTF-8">
		<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
	</encoder>
</appender>


<logger name="RocketmqClient" additivity="false">
	<level value="warn" />
	<appender-ref ref="RocketmqClientAppender"/>
</logger>

配置logRoot

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

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

或者在项目中采用某种方式只要把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);
}

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

总结

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

有关关于rocketmq 中日志文件路径的配置的更多相关文章

  1. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. ruby-on-rails - Rails - 使用/自定义 URL : '/dashboard' 指定根路径 - 2

    如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b

  5. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  6. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  7. ruby - 如何根据长度将路径数组转换为嵌套数组或散列 - 2

    我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa

  8. Ruby 默认将 IRB 配置为 Pretty_Inspect - 2

    我是ruby​​的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽

  9. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

  10. ruby - 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作? - 2

    我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe

随机推荐