ログメッセージの改善
Qtはこれを行うための複数の方法を提供しています。結果と複雑さを両立させるには、Qt のログ型とカスタムメッセージパターンを組み合わせるのが良いでしょう。
Qtでは、最小レベルから最重要レベルまでの5つのログタイプを定義しています。
- qDebug(): これは、カスタムデバッグメッセージを書くために使用されます。
- qInfo(): これは、情報提供のメッセージを書くために使用されます。
- qWarning(): これは、アプリケーションの警告や回復可能なエラーを記述するために使用されます。
- qCrtitical(): これは、重要なエラーメッセージを書き込んだり、システムエラーを報告したりするために使用されます。
- qFatal(): これは、自動的に存在する前の最後のメッセージを書くために使用されます。
常に最適なものを使うようにしましょう!
デフォルトでは、メッセージ・パターンは余分なデータなしでメッセージのみを表示するように設定されていますが、より多くの情報を表示するようにパターンをカスタマイズすることができます。このパターンは、環境変数 QT_MESSAGE_PATTERN を設定することで、実行時に変更することができます。また、ソフトウェアからqSetMessagePattern関数を呼び出してパターンを変更することもできます。パターンは単なる文字列であり、いくつかのプレースホルダが含まれています。
これらは、よく使うプレースホルダです。
- %{appname}: これはあなたのアプリケーション名です。
- %{file}: これはソース・ファイルへのパスです。
- %{function}: これは関数名です。
- %{line}: これはソース・ファイルの行です。
- %{message}: これはオリジナルのメッセージです。
- %{type}: これはQtのログタイプ(”debug”, “info”, “warning”, “critical”, “fatal”)です。
- %{time [format]}: メッセージが発生したシステム時刻です。
これを使う簡単な方法は、main.cppファイルを以下のように編集することです。
#include <QApplication>
#include <QDebug>
...
int main(int argc, char *argv[])
{
qSetMessagePattern("[%{time yyyy-MM-dd hh:mm:ss}] [%{type}]
%{function} %{message}");
qInfo() << "Application starting...";
QApplication a(argc, argv);
...
return a.exec();
}
アプリケーションの出力には、このようなものが表示されるはずです。
[2016-10-03 10:22:40] [info] qMain Application starting...
Qt のログタイプとカスタムメッセージパターンを、自分にとって有用なパターンが見つかるまで遊び倒してみてください。
Tips
より複雑なアプリケーションでは、QLoggingCategoryクラスを使用してロギングのカテゴリを定義することができます。これについての詳細は http://doc.qt.io/qt-5/qloggingcategory.html を参照してください。