self.get_logger()
메서드는 ROS 2에서 Python을 사용하여 노드를 개발할 때 로깅을 위해 사용노드의 로거 인스턴스를 반환
get_logger()
로 반환된 로거 객체는 다음과 같은 여러 로그 레벨을 지원합니다:
얘가 default
)로거 객체를 사용하여 다양한 로그 레벨에서 메시지를 출력하는 방법은 다음과 같습니다:
self.get_logger().debug('This is a debug message.')
self.get_logger().info('This is an info message.')
self.get_logger().warn('This is a warning message.')
self.get_logger().error('This is an error message.')
self.get_logger().fatal('This is a fatal message.')
DEBUG
레벨의 로그를 활성화하여 가능한 많은 정보를 얻고,INFO
이상의 로그 레벨을 사용하여 필요한 정보만을 기록합니다.ROS 2에서 self.get_logger()
를 사용하여 로깅을 설정하고 관리할 때, 로그 레벨을 설정하고, 로그를 터미널과 파일에 출력하는 방법은 중요한 측면입니다. 다음은 이러한 요구 사항을 충족시키는 방법에 대한 설명입니다:
로그 레벨 매개변수를 설정
해야함.ROS 2 파라미터 서버를 사용
하거나, 커맨드 라인 인터페이스를 통해
설정os.environ['RCUTILS_LOGGING_LEVEL'] = 'INFO'
ros2 run [package_name] [node_name] --ros-args --log-level info
ros2 launch 명령어를 사용하여 노드를 실행할 때
, 특정 환경 변수를 통해 로깅 구성을 지정하는 방식
ROS 2에서는 기본적으로 로그 파일 저장 기능을 직접 제공하지 않습니다.
그러나, ROS 2 로그 메시지를 파일로 리디렉션하거나 외부 로깅 프레임워크를 사용하여 로그를 파일로 저장할 수 있음
리디렉션을 통한 저장: 노드를 실행할 때 터미널 출력을 파일로 리디렉션할 수 있습니다. 예를 들어:
ros2 run [package_name] [node_name] > log.txt
이 명령은 모든 터미널 출력을 log.txt
파일에 저장합니다.
Python 로깅 모듈 사용: Python의 내장 logging
모듈을 사용하여 로그 파일을 관리할 수 있습니다. rclpy
의 로거와 별개로 logging
모듈을 설정하여 파일로 로그를 기록할 수 있습니다. 예를 들어:
import logging
logging.basicConfig(level=logging.INFO, filename='node.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
이 코드는 node.log
파일에 로그를 기록하도록 logging
모듈을 설정합니다. basicConfig
메서드를 통해 로그 레벨, 파일 이름, 로그 포맷 등을 지정할 수 있습니다.