macOS Sierra時代のsyslogとの付き合いかた
/var/log/system.log
へ書き込まれないのでした
ある調査によると、人間は一日におよそ86400回はsyslogに出力したいと願っているそうです*1。
さて例えばlogger
コマンドを使って syslog に出力しておく、なんていうことは稀によくあることではないでしょうか。私は稀によくあります。
ところが、MacにおいてSierraにアップグレードしてからというもの、loggerコマンドや何がしかのプログラミング言語を使ったsyslogへの出力を行なってもsyslogーーいわゆる /var/log/system.log
へ書き込まれないのでした。
統合されたログ環境
実は macOS Sierra 10.12 あたりを見ると、なんとなくsyslogについて言及されている。
要約すると
- ASL (Apple System Logger)という統合されたログ環境になったよ
- 見るなら Console.app を見てね
- log コマンドでも見れるよ
そんなわけで、loggerコマンドなどで出力したログは虚空に吸い込まれたわけではなく、ASLに出力されているのでした。
ログを検索することもできる
新しくなったconsole.appで logger プロセスからの出力でフィルタリングしつつ、loggerコマンドを実行するとこんな感じで出力される。
もちろん、過去に出力されたログを検索することもできる。
また、上記で書いたように log
というコマンドも用意されていて*2、それを使うと、例えばこんな風にログを検索することもできる。
% log show --style syslog --predicate 'processImagePath endswith "logger"' --start "2017-04-06 23:02:30" Skipping info and debug messages, pass --info and/or --debug to include. Filtering the log data using "processImagePath ENDSWITH "logger"" Timestamp (process)[PID] 2017-04-06 23:02:33.918967+0900 localhost logger[51425]: アババババばばばばb
logコマンドについてはまー man log
すれば雰囲気はわかると思う。この先は君自身の目で確かめてくれ!
これでsyslogに何も出力されなくて途方にくれなくて済みますね。