ros/ros_comm

[rosconsole]: Unable to use JSONLayout

rr-tom-noble opened this issue · 1 comments

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

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