Qt 5 の未来は明るいブログ

環境変数 QT_LOGGING_RULES でのログ出力のルールの設定を改善しました

Published: 2015-07-17

Qt Japan Summit 2015 でカテゴライズされたログ出力の仕組みや出力の形式の設定についてのセッションをした時に色々気になっていたところを直す余裕がちょっとできたので色々改善中です。

Qt のログの出力のルールは QLoggingCategory の「Logging Rules」 に記載されているようにいくつかの設定方法がありますが、環境変数 QT_LOGGING_RULES もその一つです。基本的に改行区切りで設定するルールですが、環境変数の時は(改行区切りで設定するのがめんどくさいので)一行で書きたいなーと思って QT_LOGGING_RULES supports multiple rules separated by semicolons というパッチを作成しました。

変えたのは一行

- const QByteArray rulesSrc = qgetenv("QT_LOGGING_RULES");
+ const QByteArray rulesSrc = qgetenv("QT_LOGGING_RULES").replace(';', '\n');

パーサーは改行を区切りとして動作するので、セミコロンを改行に置換するだけという、とても単純明快な変更です。

それ以外がめんどくさかった

最初は 5.5 ブランチにプッシュしたのですが、「これ挙動の変更だから 5.6 の方(dev ブランチ)にプッシュしてね」と言われたり、「環境変数のセパレータは普通はコロンなので、それも対応して」と言われたり、「コロンはやめようぜ」と言われたり、「挙動が変わるからドキュメント書いてね」と言われて、似たようなことをしているところのドキュメント を参考に 頑張って書いた り、ChangeLog に載せるためのコメントを コミットメッセージ に書いたり、不安定な CI と粘り強く付き合ったりと、色々頑張りました。

Qt 5.6 (LTS) で使えるようになります

今年の11月とか12月とかにリリースされるやつですね。それまで待ちきれない人はこのパッチを当てててください。