シエラでロガーコマンドを使用する方法?


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で終了し、出力はありません。lo gg erで試してみました。
SG_ 2016年

3
私もHello Worldどの/var/log/*.logファイルにも何も表示されません。@SG_が見ている動作は、macOS 10.12を実行している私のMacで再現可能です。また、logger -s 'Hello World'コンソールに正しく出力されますが、ディスク上のログファイルには出力されません。
Graham Miln、2016年

2
system.logに表示されませんが、コンソールで「すべてのログ」を表示すると、そこに表示されます。変だ!
Harv

回答:


9

AppleのロギングシステムがmacOSシエラで変更されたためです。それらはApple System Log機能から統合ロギングに移行しています。

開発者向けドキュメントへのリンクは次のとおりです。

以下は、テキスト「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バージョンでは、syslogデータベースだけでなく、優先度が十分高い場合(たとえば、-pアラートを使用)、ロガーコマンドは/var/log/system.logファイルに送信していました。シエラでは、ロガーが10.12.1で-p alert -notとともに使用された場合、system.logは書き込まれません。これはバグである可能性があります。

ロガーを使用して新しいロギングシステムに送信することはできますが、結果を表示するには、コンソールアプリ、cliログユーティリティ、または新しいAPIを使用する必要があります。


1
これはほとんどリンクのみで「たぶん」答えです。〜素人はあなたのコマンドの意味を理解しません。説明を追加してください。
クラノーマ

1
4か月後、リンクはすでに壊れています。
ジョン・スミス

私は現在のリンクは次のとおりだと思います: developer.apple.com/reference/os/logging
ktappe

2

この問題は、netcatを使用して、launchdaemonから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

これは本当の答えではありませんが、回避策であり、コメントするには長すぎます。

シエラでも、ロガーコマンド(El Capitanで動作)を含む自作の更新シェルスクリプトをログに記録しようとして、同じ問題に直面しました。ロガーを放棄する必要があり、単にエコー、出力リダイレクト、および新しいログファイルを使用しました。

#!/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.