Diarkis Module のロギング・システム

概要

本ページでは Diarkis Module のロギング・システムについて説明します。

Diarkis Module では Diarkis ランタイム・ライブラリおよび Diarkis Module の動作状況をログに出力しています。出力されたログは標準出力やファイル出力など様々な方法で確認することができます。想定したように動作しない場合や Diarkis ランタイムの動作状況を確認したい場合はまず初めにログ・ファイルを内容を確認することをお勧めします。

ロギング・システムの設定

Diarkis Module のロギング・システムの設定は DiarkisInterfaceBase::DiarkisInit() に渡す引数でコントロールします。ログ・ディレクトリ名、出力方法、ログを出力するかどうか等を設定することができます。

Diarkis Module のログ出力方法

Diarkis Module では以下の出力方法をサポートしています。

ログ出力レベル

Diarkis Module のロギング・システムではログに出力する内容の詳細度を調整するログ出力レベルを設定することができます。diarkis-module\Client\Private\logging\LoggerFactory.cpp で実装している LoggerFactory のコンストラクターにデフォルトのログ出力レベルが記載されているため、これを変更することで変えることができます。また、LoggerFactory::SetSeverity() を使用してアプリ実行中に動的に変更することも可能です。

ログの出力レベルには以下の設定があります。下の設定ほどログの詳細度がまします。また、詳細度が高いログレベルは下位のログ・レベルを常に内包します。 Verbose や Trace は Diarkis ランタイムの動作速度に影響したり、ログ・ファイルが巨大になる可能性がありますので使用する際はご注意ください。

カテゴリ毎に確認できるログの内容

クライアント・ライブラリのロギング・システムでは、カテゴリ毎にログ・レベルを変更できる仕組みが用意されております。デバック時に確認されたい内容に合わせて、必要なカテゴリのログ・レベルを変更してご確認ください。

カスタム・ロガーの実装

カスタム・ロガーを使用すると、ロガーの動作をユーザーが自由にカスタマイズすることができます。 ILoggerBackend を継承して ILoggerBackend::Log() をオーバーライドすることにより Diarkis ランタイムおよび Diarkis Module のログ出力処理をハンドリングすることができます。 以下がサンプル実装です。

// アプリケーション・カスタムのログ出力サンプル実装
class AppCustomLoggerBackend : public ILoggerBackend
{
    public:
        AppCustomLoggerBackend() {}
        virtual ~AppCustomLoggerBackend() {}

        virtual Result Log(const Diarkis::StdString& message, bool includeNewLine) override
        {
            // ログ・テキストが message として渡されるため、アプリ固有のログ出力を行う
            // 排他制御は行われているため複数スレッドから呼び出しても問題ない
            DiarkisUtils::Print("%s", message.c_str());
            return Diarkis::Results::SUCCESS;
        }
};

...
// カスタム・ロガーを初期化時に指定する疑似コード
AppCustomLoggerBackend customLogger;

DiarkisInterface::DiarkisInit(uid, LogOutType::CUSTOM, bOutLog, &customLogger);

最終更新