ROS logger禁用Python logger

时间:2019-06-19 13:35:23

标签: python logging ros python-logging rospy

我在Python记录器和rospy记录器方面遇到问题。首先,初始化ROS节点后,Python记录器便停止了记录。我试图通过向记录器添加流处理程序来解决该问题。现在,它仅记录ROS节点是否已初始化。

我在ROS git中阅读了有关rospy和python日志记录冲突的信息,但是似乎没有很好的解决方案来单独使用python记录器并且独立于ROS记录器来编写我的代码。

一些模块初始化记录器:

    path = "/some_directory/"
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger('logger_name')

    # logging file handler for basic log infos
    file_handler_info = logging.FileHandler('{}log.log'.format(path))
    file_handler_info.setFormatter(formatter)
    file_handler_info.setLevel(logging.INFO)
    logger.addHandler(file_handler_info)

    # logging file handler for critical warnings
    file_handler_critical = logging.FileHandler('{}critical.log'.format(path))
    file_handler_critical.setFormatter(formatter)
    file_handler_critical.setLevel(logging.WARNING)
    logger.addHandler(file_handler_critical)

    # logging stream handler for console output
    stream_handler = logging.StreamHandler()
    stream_handler.setFormatter(formatter)
    stream_handler.setLevel(logging.DEBUG)
    logger.addHandler(stream_handler)

启动ROS节点的其他模块

logger.info("This message will not be displayed")
rospy.init_node('node_name', anonymous=True)
logger.info("This message will be displayed")

1 个答案:

答案 0 :(得分:0)

rospy 提供 overriding the default logging configuration

<块引用>

默认情况下,rospy 和其他 ROS python 库使用 $ROS_ROOT/../../etc/ros/python_logging.conf。此文件是 Python 日志记录模块使用的标准 fileConfig 格式(请参阅 https://docs.python.org/library/logging.config.html#configuration-file-format)。

您可以通过设置 ROS_PYTHON_LOG_CONFIG_FILE 环境变量来覆盖此配置文件的位置。

自定义或创建您自己的 python_logging.conf 版本,默认情况下该版本位于 /opt/ros/YOUR_ROS_DISTRO/etc/ros/

也许将 streamHandler 添加到根记录器已经足够了:

[logger_root]
level=DEBUG
handlers=fileHandler,streamHandler