Sierra에서 로거 명령을 사용하는 방법은 무엇입니까?


11

을 사용하여 쉘 스크립트에서 이벤트 / 체크 포인트를 기록하려고합니다 logger.

OS X (버전 10.12 (16A323))의 사용법 logger또는 syslog유틸리티 . 나는 시도했다

logger "Hello world"/var/log/system.log콘솔 앱을 사용하여 확인 하면 다음과 같은 로그 항목이 생성됩니다.

이름이 '–Xó ^ H'인 이진의 문자열을 수집하지 못했습니다.

loggerOS X에서 사용하는 방법 ? OS X 시스템 로그에 항목을 작성 / 추가하기 위해 지정해야 할 것이 있습니까?


왜 원하는지 언급하여 질문을 개선 할 수 있습니까? 사람들이 귀하를위한 옵션을 찾는 데 도움이 될 수 있습니다.
Harv

항목을 성공적으로 기록 할 수있었습니다 : $ logger "로그 항목입니다"$ echo $? 0 콘솔에서 "모든 메시지"를 체크하면 메시지가 나타납니다.
Harv

1
상태 코드 1로 종료되었으며 출력이 없습니다. 나는 싸다과 노력 의 GG 어.
SG_

3
나도 Hello World어떤 /var/log/*.log파일 에서도 볼 수 없다 . @SG_가보고있는 동작은 macOS 10.12를 실행하는 Mac에서 재현 할 수 있습니다. 또한 logger -s 'Hello World'콘솔에는 올바로 인쇄되지만 디스크상의 로그 파일에는 인쇄되지 않습니다.
Graham Miln

2
system.log에는 나타나지 않지만 콘솔에서 "모든 로그"를 보면 거기에 표시됩니다. 이상한!
Harv

답변:


9

macOS 시에라에서 Apple의 로깅 시스템이 변경 되었기 때문입니다. Apple 시스템 로그 기능에서 통합 로깅으로 이동하고 있습니다.

다음은 개발자 설명서에 대한 링크입니다.

다음은 "Message4me"텍스트에 대한 새로운 통합 로그를 필터링합니다.

$logger -is -t LogTest "Message4Me" 
Oct 15 13:19:27  LogTest[51173] <Notice>: Message4Me

$log show --predicate 'eventMessage contains "Message4Me"' --last 3m

Skipping info and debug messages, pass --info and/or --debug to include.
Filtering the log data using "eventMessage CONTAINS "Message4Me""
Timestamp                       Thread     Type        Activity             PID    
2016-10-15 13:19:27.666574+0900 0x33b62c   Default     0x0                  51173  logger: Message4Me
 --------------------------------------------------------------------------------------------------------------------
Log      - Default:          1, Info:                0, Debug:             0, Error:          0, Fault:          0

=======

--info를 추가하면 출력에 이벤트 메시지 자체도 표시됩니다.

이전 OS 버전에서 로거 명령은 우선 순위가 높으면 (예 : -p 경고 사용) syslog 데이터베이스로 /var/log/system.log 파일로 전송합니다. Sierra에서는 logger가 10.12.1에서 -p alert -not와 함께 사용될 때 system.log가 기록되지 않습니다. 이것은 버그 일 수 있습니다.

로거를 사용하여 새 로깅 시스템으로 보낼 수는 있지만 콘솔 앱 또는 cli log 유틸리티 또는 새 API를 사용하여 결과를 확인해야합니다.


1
이것은 거의 링크 전용이며 "아마도"대답입니다. ~ layman은 명령의 의미를 이해하지 못합니다. 설명을 추가하십시오.
klanomath

1
4 개월 후 링크가 이미 끊어졌습니다.
John Smith

현재 링크는 다음과 같습니다. developer.apple.com/reference/os/logging
ktappe

2

netcat을 사용하여 런칭 데몬에서 10 분마다 특정 로그를 보내는 스크립트를 사용하여이 문제를 해결했습니다. 필요에 따라 편집하십시오.

#!/bin/bash

while read line    
do
    #drop log entries in the log file you don't want to sent to syslog server
   if [[ "$line" =~ ^.*recurring\ check-in.* || "$line" =~ ^.*Executing\ Policy\ Update\ Inventory.* ]]; then
     /bin/echo "" > /dev/null;
   else
     ## send logs to syslog server using netcat. Edit IP and UDP port as necessary
     echo $line | nc -v -u -w 0 10.10.1.9 514
   fi
done < /var/log/system.log

1

이것은 실제 답변이 아니라 해결 방법이며 너무 길어서 주석입니다.

Sierra에서 로거 명령 (El Capitan에서 작동 함)을 포함하여 homebrew 업데이트 쉘 스크립트를 기록 하려고하는 동일한 문제에 직면 했습니다. 로거 를 포기 하고 단순히 에코, 출력 리디렉션 및 새로운 로그 파일을 사용해야했습니다.

#!/bin/bash

Brew=/usr/local/bin/brew
Brewup_Log=/Users/user/Library/Logs/brewup.log

echo "$(date "+%Y.%m.%d %H:%M:%S")" >> $Brewup_Log 2>&1
$Brew update 2>&1 >>$Brewup_Log
....
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.