ros / ros_comm

ROS communications-related packages, including core client libraries (roscpp, rospy, roslisp) and graph introspection tools (rostopic, rosnode, rosservice, rosparam).
http://wiki.ros.org/ros_comm
753 stars 913 forks source link

[rosconsole]: Unable to use JSONLayout #2375

Open rr-tom-noble opened 2 weeks ago

rr-tom-noble commented 2 weeks ago

I'm attempting to format all of my ROS logs as JSON. From what I understand, rosconsole uses log4cxx, which appears to come with a JSONLayout

Using the following rosconsole.conf file works fine:

log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=${message}
log4j.rootLogger=ALL, console

However, replacing the PatternLayout with a JSONLayout causes the following error:

log4cxx: Could not instantiate class [org.apache.log4j.JsonLayout].
log4cxx: Class not found: org.apache.log4j.JsonLayout
rr-tom-noble commented 2 weeks ago

Ah, I think the version of liblog4cxx-dev doesn't come with JSONLayout installed:

tom@machine:~$ dpkg -L liblog4cxx-dev | grep layout
/usr/include/log4cxx/helpers/datelayout.h
/usr/include/log4cxx/htmllayout.h
/usr/include/log4cxx/layout.h
/usr/include/log4cxx/patternlayout.h
/usr/include/log4cxx/simplelayout.h
/usr/include/log4cxx/ttcclayout.h
/usr/include/log4cxx/xml/xmllayout.h