ROS中log4j的学习记录

Matlab与ROS数据互联:跨平台实时通信的工程实践指南 在机器人系统开发中,Matlab常用于算法快速验证,ROS则承担实机部署与分布式通信,二者协同构成典型的异构计算架构。其核心挑战并非简单连接,而是围绕数据生命周期管理展开的系统级问题——涵盖数值精度对齐、时间戳同步、类型安全转换、内存模型兼容及实时性保障等关键技术维度。尤其在控制闭环、多传感器融合等场景下,float32/double截断误差、CLOCK_MONOTONIC与datetime时间基准差异、ROS消息IDL序列化开销等问题会直接导致控制震荡或建图漂移。本文聚焦Matlab和ROS数据互联这一高 阅读详情

ROS中log4j的学习记录

因为最近师兄叫学习这个,在网上看到很多log4j的讲解,但是好像很多都不是和ROS相关的,调用文件都是用的C++这种调用的,而ros中主要是用.launch文件调用的好像。学习记录如下:

在ros中的调用:
在这里插入图片描述
一般都是在launch文件夹中的launch文件中被调用的:
在这里插入图片描述

前面几行,被选中的地方就是选定config文件的目录,名字。

 <env name="ROSCONSOLE_CONFIG_FILE"
     value="$(eval optenv('ROSCONSOLE_CONFIG_FILE', find('web_interface') + '/config/log.conf'))"/>
  <node pkg="web_interface" type="web_control.py" name="web_control_service" output="screen">

主要作用是设置ROS的环境变量。

先上一段conf文件中的代码:

log4j.logger.ros=WARN
log4j.logger.ros.learning_topic=INFO,pkg_pro
log4j.appender.pkg_pro=org.apache.log4j.RollingFileAppender
log4j.appender.pkg_pro.File=${HOME}/history/task/lala.log
log4j.appender.pkg_pro.MaxFileSize=10240KB
log4j.appender.pkg_pro.MaxBackupIndex=10
log4j.appender.pkg_pro.layout=org.apache.log4j.PatternLayout
log4j.appender.pkg_pro.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss SSS}] %t %p %M:%L - %m%n
#log4j.appender.pkg_pro.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss SSS}] %t %c{1} %p %M %L - %m%n

其中每句话都有不同的含义:
首先

log4j.logger.ros=WARN

都需要配置根logger,这句话好像就是配置根logger的。其中WARN是日志级别,表示输出WARN及以上等级的信息:

日志级别:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFF
Log4J推荐使用:DEBUG, INFO, WARN, ERROR
OFF 为最高等级 关闭了日志信息
FATAL 为可能导致应用中止的严重事件错误
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
TRACE 为比DEBUG更细粒度的事件信息
ALL 为最低等级,将打开所有级别的日志

然后

log4j.logger.ros.learning_topic=INFO,task

ROS官方介绍文档说的是:

log4j.logger.ros.my_package_name=DEBUG

对应关系是 logger.ros后面一定要跟着功能包的名字,这里的my_package_name=learning_topic!如果跟的不是功能包的名字,则会导致没有输出信息,甚至会报错。

然后是

log4j.appender.pkg_pro=org.apache.log4j.RollingFileAppender

其中appender是日志输出器(不可以自定义),配置日志的输出级别、输出位置等,后面的pkg_pro是appenderName,也就是一个别名,可以自定义。这里是在这篇文章学习的。
‘=’号后面的一串东西是用来配置日志信息输出目的地的:

1.org.apache.log4j.ConsoleAppender(控制台)
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

然后后面的

log4j.appender.pkg_pro.File=${HOME}/history/task/lala.log

是配置输出文件的位置+名称
后面的MaxFileSize、MaxBackupIndex是有关RollingFileAppender的配置参数:

MaxFileSize 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex 指定可以产生的滚动文件的最大数。

后面的

log4j.appender.pkg_pro.layout=org.apache.log4j.PatternLayout

中的PatternLayout,是布局模式的配置。

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

最后,补充上面的代码中可能没有出现的log4j的一些解释:

控制台选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台 FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB.
在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd
HH:mm:ssS} %c %m%n 日志信息格式中几个符号所代表的含义:
-X号: X信息输出时左对齐; %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL, %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd
HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 %r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名 %t: 输出产生该日志事件的线程名 %l:
输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main
(TestLog4.Java:10) %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像Java
servlets这样的多客户多线程的应用中。 %%: 输出一个"%“字符 %F: 输出日志消息产生时所在的文件名称 %L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息 %n:
输出一个回车换行符,Windows平台为”\r\n",Unix平台为"\n"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

ClawBot开源机器人架构:分层解耦与ROS 2工程实践 机器人系统架构设计是机电一体化开发的核心挑战,涉及硬件抽象、实时控制、任务编排与跨团队协作。基于ROS 2的分层解耦架构,通过硬件接口标准化(HAL)、控制原语封装(CAL)和任务序列化(TAL),显著降低系统耦合度与协作成本。这种设计不仅提升模块复用性与测试覆盖率,更支撑多平台部署、安全可验证的力控行为及快速迭代的产线集成。ClawBot作为典型范例,将生物形态隐喻转化为工程分层契约,使ROS应用开发从‘经验驱动’转向‘契约驱动’,为嵌入式机器人、工业自动化与教学原型提供可复刻的开源基础设施。 阅读详情

相关推荐

高频功率放大器的设计实现

摘 要 随着无线通信技术的高速发展,市场对射频电路的需求越来越大,同时对射频电路的性能要求也越来越高。高频功率放大器是位于无线发射级末端的重要部件,为了弥补信号在无线传输过程中的衰耗,要求发射机具有较大功率的输出,通信距离越远,要求的输出功率越大。在高频范围内,为了获得足够大的高频输出功率,就要采用高频功率放大器。 本次课程设计的高频功率放大器的技术指标包括输出功率、效率、功率增益、由于高频频功率放大器的输出功率比较大,耗能比较多,所以工作效率就显得比较重要。本课程设计的高频功率放大器电路由两极功率放大器

qq_43543515的博客 3万+

ROS机器人程序设计(原书第2版)3.2.6 显示信息的方式——单次、可调、组合...

3.2.6 显示信息的方式——单次、可调、组合 你可以控制信息的显示次数。通过使用ROS_<LEVEL>[_STREAM]_ONCE[_NAMED]可以让信息只输出一次。 这段代码也是来自example2节点,只会显示信息1次。 然而,有时候在迭代中以一定频率显示信息更好。这就需要可调信息。它们和前面单次显示的消息格式是一样的,但是需要将...

weixin_33716557的博客 216

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点)

本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。

weixin_29169505的博客 342

Log4j和ROS_INFO把中文显示为乱码问号的问题解决方案

最近在调试代码,需要自己编写一个进程,把日志写到文件中并统一管理。因为是机器人工程师,所以采用了和ros一样实现的log4j工具。但是意外发现,中文无法写入到日志中,显示出来的全是问号。之类的完全没有用,就不要尝试了。可以说基本上是没有屁用。

微鉴道长的博客 3927

ABAP 7.40 新语法介绍系列之六:使用 FILTER 关键字对 ABAP 内表进行过滤

笔者之前写过的关于 ABAP 740 新语法的文章:本文介绍另一个新的关键字:FILTER.FILTER 是 ABAP 740 中引入的一个关键字,用于简化数据操作,它能够将内部表(Internal Table)中的数据按特定的条件进行过滤,并生成一个新的内部表。FILTER 的引入旨在使代码更加现代化和高效,尤其是在面对大量数据需要过滤的情况下。传统上,开发人员可能需要使用 LOOP AT 结合条件判断来实现,但使用 FILTER 关键字后,代码显得更加简洁且易于维护。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1166

火灾图像检测识别:cnn卷积神经网络 Adaboost 支持向量机 随机森林 决策树 完整代码数据

火灾图像检测识别:cnn卷积神经网络 Adaboost 支持向量机 随机森林 决策树 完整代码数据

861

LogBack日志文件详解(文件的最大个数,和文件的最大大小)

<?xml version="1.0" encoding="UTF-8"?> <!-- 失败日志还需要记录在日志文件中,日志文件采用10个10M的日志文件循环覆盖的方式,不至占满硬盘空间 --> <!-- files in general, please contact the logback user mailing list --> <!-- at...

qq_28929589的博客 2万+

Dify 第 19 篇 手把手教你开发 Dify 插件:从零实现一个时间工具

本文介绍了Dify平台的插件开发机制和流程。Dify支持多种插件类型,包括模型、工具、数据源等,可通过CLI工具快速开发插件。文章详细讲解了如何安装Dify CLI工具,并演示了从零开发一个获取系统时间插件的完整过程,包括项目初始化、文件解读和打包部署。通过该教程,开发者可以快速掌握Dify插件开发的核心要点,实现自定义功能扩展。

甘蓝的专栏 2443

ROS中的日志log消息与ROS终端的不同颜色输出

ROS自带了大量的能够输出调试信息的函数和宏,包括错误,警告等.它提供了如信息级别,条件触发消息和STL的流接口等方式。1. 日志消息1.1 rosout的日志1.2 日志文件2. 日志等级2.1 基础介绍2.2 举例2.3 设置日志级别3. ROS日志其它说明3.1 单次输出3.2 设置输出频率4. ROS终端颜色输出

非晚非晚的博客 5492

Python 爬虫实战:攻克小红书种草笔记,抓取美妆好物推荐数据

通过本次 Python 爬虫实战,我们成功地从小红书爬取了美妆种草笔记的数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分笔记的数据,且未对笔记中的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多笔记的数据,并深入分析笔记中的多媒体内容、用户行为模式等,为美妆品牌和消费者提供更有价值的数据支持。

u014481728的博客 3265

指纹浏览器指纹工厂(下):基于真实设备数据特征的马尔可夫链生成与校验

本文揭示了静态指纹生成算法在高级风控时序追踪下的致命缺陷,指出违背设备演进马尔可夫性质(如无状态跳跃、因果断裂)是导致指纹存活率骤降的核心原因。通过分析风控系统的时序状态机与多维特征验证机制,提出基于隐马尔可夫模型(HMM)的动态指纹架构:以真实设备的状态转移链为蓝本,构建异步演进的“数字基因熔炉”,通过非均匀时间步长、突发事件响应及微观因果绑定,模拟软硬件独立更新的物理法则。最终实现指纹在时间维度与微观特征上的自洽,规避风控的时序陷阱。

数据知道的博客 413

ROS日志系统部分设置

这里写自定义目录标题ROS日志设置$ROS_ROOT/config/rosconsole.config中的配置及说明ROS_LOG_DIR环境变量ROSCONSOLE_FORMAT环境变量 ROS日志设置 $ROS_ROOT/config/rosconsole.config中的配置及说明 log4j.logger.ros.pkg=INFO,stdout,pkg_pro # pkg是ros中的package名;stdout指的是标准输出;pkg_pro是别名,后面的配置可以使用此名称来定义他的属性,此行代码代

Nicholasoooo的博客 4249

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ROS1云课→10日志信息

因为它们有自己的命名空间,而且有各自唯一的名称,这样才能够让一个动态加载节点的提示信息与其他节点的提示信息区别开。简单地说,前面提到的所有宏对于动态加载节点都是可用的,只是宏的名称需要将ROS_*开头替换成NODELET_*。通过信息记录显示程序的运行状态是好的习惯,但需要确定这样做不会影响软件的运行效率和输出的清晰度。简单地说,有不同层级的调试信息输出,每条信息都有自己的名称,并根据相应条件输出消息。通过命名的消息,可以使用配置文件为每个命名的消息设置不同的初始日志级别,之后可以单独修改它们。......

zhangrelay的专栏 1428

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

log4j日志配置详解

log4j.rootLogger=INFO,db语法为: log4j.rootLogger = [ level ] , appenderName1, appenderName2, … level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WA

Mr_zhaoz的博客 2635

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LOG4J安装配置实录

具体工作做完了,学习以下Log4j的使用。以前别人配好了我用,现在学着配置一下,并记录下全部过程。0、首先当然要下载log4j.jar了下载地址:http://logging.apache.org/log4j/1.2/download.html我下载的是log4j-1.2.15.jar1、新建Web Project工程名:log4j2、给工程添加Log4j从0步下载的文件中找到log4j-1.2....

weixin_33751566的博客 104

Log4j详细配置

备注:以下基础介绍部分引用(http://blog.youkuaiyun.com/snakeqi/article/details/5183070) 一、Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行

770

Log4j 日志详细用法

简单的说log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地、日志信息的输出格式 Log4j 除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。 程序员经常会遇到脱离java ide环境调试程序的情况,这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带...

modabobo 364

ROS日志级别控制

ros日志输出路径 ros节点日志文件输出到~/.ros/log文件夹。可以通过修改环境变量(ROS_HOME 或者 ROS_LOG_DIR )来修改路径。但与具体工程无关。如果使用roslaunch启动程序,可以通过roslaunch-logs命令指定日志的输出路径。 ros日志显示输出的级别 DEBUG:输出程序正常运行需要的信息 Information that you never need to see if the system is working properly. Exampl

reason的博客 3477

log4j详细配置文件

################################################################################  #①配置根Logger,其语法为:  #  #log4j.rootLogger = [level],appenderName,appenderName2,...  #level是日志记录的优先级,分为OFF,TRACE,DEBU

自古红蓝出CP的博客 763

log4j 多个日志文件

log4j.rootLogger=INFO,stdout, root , A, B log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4

老李2009 343

ROS日志系统深度解析:从调试辅助到工业级可观测性基石

日志系统是机器人软件工程中不可或缺的可观测性基础设施,其本质远超简单的printf输出。在ROS生态中,日志承载着运行时状态记录、分布式故障追踪、实时性保障与安全审计等多重技术价值。它依托宏层编译裁剪、log4cxx定制引擎、多目标并行输出(控制台/文件/rosout)等核心机制,支撑导航、控制、感知等关键模块的可维护性与可诊断性。尤其在嵌入式平台(如Jetson、ARM)、多机协同及无人值守场景下,合理的日志分级(TRACE/DEBUG/INFO/WARN/ERROR)、命名空间隔离、异步缓冲与时间戳同步

weixin_33713350的博客 549

log4j.properties详细配置

转自:http://blog.sina.com.cn/s/blog_5ed94d710101go3u.html ①配置根Logger,其语法为: #log4j.rootLogger = [level],appenderName,appenderName2,... #level是日志记录的优先级,分为OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,AL...

weixin_30810239的博客 144

ROS 2机器人开发实战:从LQR控制到AI感知的完整技术栈

机器人操作系统(ROS)作为机器人开发的标准框架,通过模块化架构实现了硬件抽象、运动控制和环境感知的协同工作。其核心原理基于分布式节点通信,采用发布-订阅机制实现各功能模块的解耦。在技术价值层面,ROS 2提供了统一的开发接口和丰富的工具链,显著降低了机器人系统的开发复杂度。特别是在运动控制领域,LQR(线性二次调节器)算法通过状态反馈优化控制性能,在双足机器人平衡等场景中发挥关键作用。结合现代AI技术,机器人能够实现视觉感知、路径规划等高级功能。本文以田径场跑道识别和自主导航为例,展示了ROS 2与LQR

weixin_30652897的博客 377

关于ros消息显示等级以及[DEBUG】刷屏的解决方案

如下,根据rqt_logger_level,修改log4j.logger.ros.roscpp和log4j.logger.ros.roscpp_internal的等级为INFO。1.在终端输入rqt_logger_level,可通过手动方式改变level等级,但是操作麻烦,而且程序重启后又会失效。在终端输入vim /opt/ros/noetic/share/ros/config/rosconsole.config。在后续的程序运行中,DEBUG刷屏消失(注:首先要确认DEBUG是由那个日志引起的)

qq_35971623的博客 671

Log4j日志管理系统简单使用说明

Log4j有三个主要的组件:Loggers,Appenders和Layouts,这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明: 1、 Loggers Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和F...

java学习者 127
上一篇: ubuntu 18.04和ROS melodic上cartographer安装过程记录
下一篇: ROS catkin_make 报错“Could not find a package configuration file provided by”
Kwokyeee
博客等级 码龄8年 24粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值