launchd でログをとる (macOS Sierra)
macOS 10.12.6 で log コマンドから launchd の StandardOutPath 経由でログファイルを書き込もうとしています。
ターミナルで ProgramArguments と同じ以下のコマンドを入力すると
/usr/bin/log stream --style=syslog --level=info --predicate='process="sshd"'
必要なログがターミナルにリアルタイムに出力されますが、launchd で StandardOutPath を指定して出力させようとしたり >> でファイルに redirect させたりするとリアルタイムに出力されません。ログイベントが出力されるまで(ファイルに書き込まれるまで)バッファされているようで、次のいくつかのログイベントが発生するまで、今起こったイベントの内容を読むことができません。
OSのバッファをイベント毎にフラッシュさせたいのですが、launchd でどのように設定すればいいのでしょうか。ちなみにmacOS 10.14.2 では launchd でリアルタイムに書き出されます。
以下は launchd の plist (de.agir.log.sshd.plist) の中身です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key><false/>
<key>Label</key><string>de.agir.log.sshd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/log</string>
<string>stream</string>
<string>--style=syslog</string>
<string>--level=info</string>
<string>--predicate='process="sshd"'</string>
</array>
<key>RunAtLoad</key><true/>
<key>WorkingDirectory</key><string>/var/run</string>
<key>StandardOutPath</key><string>/var/log/sshd.log</string>
<key>StandardErrorPath</key><string>/var/log/sshd.log</string>
</dict>
</plist>
MacBook Pro (13-inch, 2018, 4 TBT3), macOS Mojave (10.14.2)