Qt が syslog に対応しました
今年の秋にリリースされる Qt 5.6 から QDebug を使用したデバッグなどのログを syslog に直接出力できるようになりました。
経緯
2014年の1月に Support logging direct to journald, if enabled. というパッチがマージされ、Qt 5.3 から systemd の journald に直接ログを出力できるようになりました。
メジャーな Linux のディストリビューションはどんどん systemd 化してきていますが、syslog もまだ現役なので対応してみました。
パッチを書いた
journald 対応のパッチを真似して Support logging direct to syslog, if enabled. というパッチを当時の dev ブランチ(現在の 5.6 ブランチの前身)に対して送りました。configure に -syslog オプションを追加し、それが指定された場合にはログの出力を syslog に送ります。実行時に環境変数 QT_LOGGING_TO_CONSOLE を 1 に指定することで、標準エラー出力に出力先を変更する事も可能です。
レビュー
configure で -journald と -syslog と両方指定されたらどうするんだ?とか、openlog() を呼ぶ?とか呼ぶタイミングどうする?とか色々ツッコミが入って4回ほど修正をしました。
マージ
ちょっと完璧ではない部分があったのですが、Qt 5.6 の Feature Freeze のタイミングが差し迫っていたのでとりあえずこれはこれでマージをして、細かいところはあとで直そうということで、無事マージされました。
今後の予定
今回は configure に -syslog オプションを渡す方法でマージされたのですが、最終的には -logging-backend syslog のように排他的にしたいとのことだったので、別のパッチで対応中 です。こっちも一筋縄ではいかなそうなのでアレコレ話し合ってなるべく早めに取り込まれるようにしたいです。