Bash 또는 Python 스크립트의 로그를 특정 로그 단위 이름에 어떻게 추가할 수 있나요?

Bash 또는 Python 스크립트의 로그를 특정 로그 단위 이름에 어떻게 추가할 수 있나요?

스크립트(bash, python 등) 내 로깅 및 인쇄는 장치 이름과 어떤 관련이 있습니까?

매우 간단한 단위 파일 test-service.service가 있다고 가정해 보겠습니다.

[Unit]
Description=Test Unit

[Service]
Type=simple
User=myuser
Group=myuser
ExecStart=/usr/bin/bash /home/myuser/hello.sh

[Install]
WantedBy=default.target

hello.sh에는 다음이 포함됩니다.

#!/bin/bash
echo "Hello World"

해당 특정 유닛 파일에 대한 로그를 표시하려고 하면 "Hello World" 로그 줄이 표시되지 않습니다.

journalctl -u test-service -f
-- Logs begin at Mon 2019-12-09 10:07:15 CET. -- Dec 09 10:10:51 localhost.localdomain systemd[1]: Started Test Unit.

단위별로 필터링하지 않고 Journalctl을 실행하면 다음과 같은 로그 줄을 볼 수 있습니다.

journalctl -f
-- Logs begin at Mon 2019-12-09 10:07:15 CET. --
Dec 09 10:14:07 localhost.localdomain bash[4776]: Hello World

이제 이 유닛 파일에서도 동일한 일이 발생합니다.

[Unit]
Description=Test Unit

[Service]
Type=simple
User=myuser
Group=myuser
ExecStart=/usr/bin/python /home/myuser/test.py

[Install]
WantedBy=default.target

test.py에는 다음이 포함됩니다.

import logging

class TestService(object):
    def __init__(self):
        logging.basicConfig()
        self.log = logging.getLogger("test-service")
        self.log.setLevel(logging.INFO)

    def hello_world(self):
        exit_code = 0
        print("Hello world, exit_code = {}".format(exit_code))
        self.log.info("Hello world!!!")
        exit(exit_code)


if __name__ == "__main__":
    print("starting up..")
    r = TestService()
    r.hello_world()

해당 특정 유닛 파일에 대한 로그를 다시 표시하려고 하면 "Hello World" 로그 줄이 표시되지 않습니다.

journalctl -u test-service -f
-- Logs begin at Mon 2019-12-09 10:07:15 CET. --
Dec 09 10:10:51 localhost.localdomain systemd[1]: Started Test Unit.

단위별로 필터링하지 않고 Journalctl을 실행하면 다음과 같은 로그 라인이 보입니다.

systemd[1]: Started Test Unit.
Dec 09 10:28:52 localhost.localdomain python[5449]: INFO:test-service:Hello world!!!
Dec 09 10:28:52 localhost.localdomain python[5449]: starting up..
Dec 09 10:28:52 localhost.localdomain python[5449]: Hello world, exit_code = 0

Bash 및 Python 스크립트의 스크립트는 유닛 파일과 어떤 관련이 있습니까? "bash[4776]" 및 "python[5449]"는 스크립트와 관련된 기본 단위 이름입니까, 아니면 기본값은 무엇입니까?

관련 정보