로거를 사용하여 표준 출력 및 로그로 인쇄

로거를 사용하여 표준 출력 및 로그로 인쇄

여러 "echo STRING" 명령이 포함된 bash 스크립트가 있습니다. 로거를 사용하여 STRING을 기록하고 싶지만 여전히 표준 출력으로 인쇄하고 싶습니다. echo STRING | logger분명히 그렇지 않습니다.

편집: echo STRING | tee >(logger)그랬어요. >(COMMAND)는 프로세스 입력을 대체하는 프로세스 대체입니다.

답변1

Bash에서는 다음을 수행할 수 있습니다.

logger(){
  tee >(command logger)
}

logger그런 다음 이전과 같이 파이프하십시오.

Stephen Harris가 제안한 대로 사용자 정의 로깅 기능을 통해 이를 구현하려면 다음을 수행할 수 있습니다.

logger(){
  tee >(command logger)
}

echolog(){
  printf '%s\n' "$@" | logger
}

답변2

나는 보통 다음과 같은 로깅 함수를 작성합니다.

mylog()
{
  echo "$@"
  echo "$@" | logger
}

mylog "Hello, world!"

기록하려는 내용에 유연성을 제공하고 필요한 경우 줄 앞에 타임스탬프를 추가하는 등의 작업도 수행할 수 있습니다.

관련 정보