Linux用に作成されたプログラムがあり、それをMacOS 10.5マシンでビルドして実行しようとしています。プログラムは問題なくビルドおよび実行されますが、syslogを何度も呼び出します。 syslogdがMacで実行されていることは知っていますが、syslog呼び出しの出力先が見つからないようです。
Syslog呼び出しは次の形式です
syslog (LOG_WARNING, "Log message");
ログ出力をどこで見つけることができますか?
/var/log/system.log
tail -f /var/log/system.log
を使用して簡単に監視できます
「ロガー」(man logger
)および「syslog」(man syslog
)も参照してください。
疑わしい場合は、常にman syslog
があります。
メッセージは/var/log/syslog
にあります。私のマシンは、高レベルのメッセージのみを含むように設定されているため、設定が必要になる場合があります。
syslog(1)を使用してメッセージを読み取ることも、次のようなコマンドでテストメッセージを作成することもできます。
$ syslog -s -l INFO "Hello, world."
重大度P(「パニック」)を使用すると、すぐにコンソールに刺激的なメッセージが表示されます。
注意するのは興味深いかもしれません:Appleは過去に実際のsyslogd
を使用していましたが、その間すべてがASL(Apple System Log)に切り替わりました。syslog
コマンドはまだ使用可能ですが、この1つのログのみにアクセスします設定されたすべてのログファイルでASLのすべてのログメッセージにアクセスする場合は、log
コマンドを使用します。
例えば。以下は、過去2日間にSafariによって生成されたすべてのログメッセージを示しています(しばらくお待ちください)。
log show --predicate 'process == "Safari"' --last 2d
見る man log
実行できるすべてのアクション、認識しているすべてのパラメーター、およびフィルターできる属性。
Mac OS Xは syslogの機能のスーパーセット を実装しています。 syslogはすべてありますが、ASLの一部です。
Matthew Schinckelの答えで言及されたコンソールは、ASLのGUIです。サイドバーにリストされているクエリによって取得されたデータベースに存在するメッセージが表示されます。デフォルトでは2つのクエリがあります。 1つはコンソール機能で送信されたメッセージ(特にNSLog
などで使用される)のみを表示し、もう1つはallログメッセージを表示します。全メッセージクエリを確認します。あなたはおそらくそこにあなたのメッセージを見つけるでしょう。
「すべて」にはアスタリスクが付いています。 /etc/asl.confを見ると、次の行が表示されます。
# save everything from emergency to notice
? [<= Level notice] store
幸いなことに、あなたの場合、警告は通知よりも大きい(より小さい数である)ため、メッセージはこのチェックに合格します。
チャーリーの答えに基づいて、syslog.conf(5)
のマンページを見て、ファイル/etc/syslog.conf
(これは、syslog構成がデフォルトで定義されている場所であり、OS X 10.5.xでも見られます)。
プログラムのどこかでopenlog
の呼び出しを確認してください。 openlog
を呼び出した後、syslog
は、デフォルトの場所ではなく、そのログファイルに出力を保存します。