/usr/bin/logger의 stdout 및 stderr "멀티플렉싱"

/usr/bin/logger의 stdout 및 stderr "멀티플렉싱"

최근에 /usr/bin/logger에 대해 알게 되었는데 매우 좋다고 생각합니다.

우선순위 인수(-p)(facility.info, Facility.alert 등)가 포함되어 있음을 확인했습니다.

따라서 표준 입력만 기록하려면 다음과 같이 합니다.

stuff | logger -p cron.info

stderr만 기록하려면 다음과 같이 하세요.

stuff 2>&1 > /dev/null | logger -p cron.err

stdout과 stderr을 모두 기록하려면 다음을 수행하십시오.

stuff 2> >(logger -p cron.err) | logger -p cron.info

복사 붙여넣기를 피하기 위해 이 작업을 수행하는 더 간결한 방법이 있는지 궁금합니다.

대신에 그런 종류의 것들을 얻을 수 있는 방법이 있나요?

logging -F cron -s info -e err stuff

매우 감사합니다

답변1

원하는 구문이 다음과 같다면 매우 쉬울 것입니다.

logging cron info err stuff

그러한 경우에는 다음 기능을 사용하십시오.

logging() {
    if [ "$#" -lt 4 ]; then
        echo "Too few arguments." >&2
        return 1
    else
        local prefix postfix1 postfix2
        prefix="$1"
        postfix1="$2"
        postfix2="$3"
        shift 3
        "$@" 2> >(logger -p "$prefix.$postfix2") | logger -p "$prefix.$postfix1"
    fi
}

노트:

  • 대신 독립 실행형 스크립트를 작성할 수 있습니다.
  • 위와 같이 간단하지는 않지만 구문 분석이 -F가능 합니다 -s.-e키스-y 접근.

관련 정보