私はアプリケーションでBoost 1.63.0 Logライブラリを使用しています。さまざまなログファイルを初期化するために、私はboost::log::init_from_stream(...)
メソッドを使用して、構成INIファイルからシンクを構成しています。boost :: log設定ファイルの変数を使用する
私はもともとブーストログのファイルローテーション動作に問題がありました。ファイルは現在の作業ディレクトリに作成され、ファイル回転トリガまたはアプリケーション終了の "Target"ディレクトリに移動されました。目的の動作は、ファイルが "Target"ディレクトリに直接作成されることでした。私はこの投稿の助けを借りてこれを修正しました:boost::log add_file_log not writing if app exits with CTRL_CLOSE_EVENT
要するに、「FileName」キーワードには名前だけでなく完全なパス情報も提供されています。これは動作しますが、設定ファイルを "クリーンアップ"する良い方法があるかどうかは疑問でした。たとえば、INIファイルには、現在のような「ターゲット」と「ファイル名」のキーワードの両方を指定することができ
が必要です。
Target="C:\\ProgramData\\MyApplication\\Logs"
FileName="C:\\ProgramData\\MyApplication\\Logs\\AppLog_%N.log"
唯一の「ターゲット」を指定できるようにするには本当にいいだろうその変数を "FileName"変数定義で使用します。これにより、将来の変更は、1つのことを変更するだけで、ずっと簡単になります。何かのように:
#Define Target Directory for file rotation
Target="C:\\ProgramData\\MyApplication\\Logs"
#Define File Name pattern
FileName="%Target%\\AppLog_%N.log"
--- OR ---
FileName="$(Target)\\AppLog_%N.log"
これは可能ですか?