rosjava将日志级别设置为WARN

时间:2015-06-18 13:27:17

标签: java ros

我使用rosjava编写了一个ROS节点。 启动时,有一些记录输出,如:

Loading node class: MyApp.RosWrapper
Jun 18, 2015 3:12:39 PM org.ros.internal.node.client.Registrar <init>
INFO: MasterXmlRpcEndpoint URI: http://localhost:11311
Jun 18, 2015 3:12:39 PM org.ros.internal.node.client.Registrar onPublisherAdded
INFO: Registering publisher: Publisher<PublisherDefinition<PublisherIdentifier<NodeIdentifier</mynode, http://127.0.0.1:39009/>, TopicIdentifier</rosout>>, Topic<TopicIdentifier</rosout>, TopicDescription<rosgraph_msgs/Log, acffd30cd6b6de30f120938c17c593fb>>>>

我发现rosjava使用org.apache.commons.logging.Log方法(参见https://github.com/rosjava/rosjava_core/blob/indigo/rosjava/src/main/java/org/ros/internal/node/client/Registrar.java#L54

要配置此功能,通常应在类路​​径中放置一个名为commons-logging.properties的文件。我尝试将包含此文件的文件夹添加到类路径中,但没有任何更改。

更新:

我发现默认情况下rosjava使用Jdk14Logger类。

如何将日志级别降低到例如WARN?我在哪里放置相应的配置文件?

2 个答案:

答案 0 :(得分:0)

免责声明 :正如评论中所述, 适用于rosjava,因此回答这个问题。但是,我不删除帖子,以保留已经尝试过的记录。

永久设置

要永久修改日志级别,请创建一个文件并添加如下内容:

# Set the default ros output to warning and higher
log4j.logger.ros=WARN
# Override my package to output everything
log4j.logger.ros.my_package_name=DEBUG

要让ROS使用此文件,您必须定义环境ROSCONSOLE_CONFIG_FILE并将其设置为文件的路径。这可以通过将以下行添加到~/.bashrc

来完成
export ROSCONSOLE_CONFIG_FILE=/path/to/config_file

另请参阅ROS wiki about rosconsole configuration

临时设置

如果您只想临时更改当前正在运行的节点的日志级别,则可以使用工具rqt_logger_level。这将启动一个GUI,您可以在其中更改每个运行节点的日志级别。但是,不会存储这些设置,因此在重新启动节点后它将丢失。

答案 1 :(得分:0)

要管理任何ROSJava项目的日志级别,请创建如下文件:

log-config.properties

# The following creates two handlers
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler
# Set the default logging level for the root logger
.level=ALL
# log level for the "com.example" package
org.ros.logging.level=ALL
# Set the default logging level
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.FileHandler.level=ALL
# Set the default formatter
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
# Specify the location and name of the log file
java.util.logging.FileHandler.pattern=/home/robot/test.log

以后,在执行中加载配置:

java -Djava.util.logging.config.file=/home/robot/log-config.properties -jar rosjava-helloworld-0.1.0-SNAPSHOT-all.jar 

Juan Antonio