私は、ロギング用のブースト設定ファイルを使用するには、次のコード行でログインするためのブースト1.63を使用しているため動作しません。 Boost log setup APIの理解から自分自身を救うことができます。設定ファイルの内容は次のとおりです:ブーストログ自動フラッシュはファイル
[Core]
DisableLogging="false"
[Sinks.SYSLF]
Destination="TextFile"
Asynchronous="true"
AutoFlush="true"
Format="[%TimeStamp(format=\"%Y-%m-%d %H:%M:%S.%f\")%][%Severity%] %Message%"
Target="logs"
FileName="dsmip_%N.log"
RotationTimePoint="00:00:00"
ScanForFiles="Matching"
MaxSize="10000000"
Filter="%Severity% >= info"
[Sinks.Console]
Destination="Console"
AutoFlush="true"
Format="[%TimeStamp(format=\"%Y-%m-%d %H:%M:%S.%f\")%][%Severity%] %Message%"
Filter="%Severity% >= debug"
私の問題はファイルに対しては機能しません。 stdoutではすべてのイベントを即座に取得しますが、アプリケーションを終了するとファイルが最初に書き込まれます。これはロギングのためにかなり恥ずかしいです...
最初に1.58を使用しましたが、状況は同じでした。何が間違っていますか?
ありがとうございます。 最高の:Balazs Bamer
あなたが任意のコードを示していないので、それは何かを示唆することは困難です。 Boost.Logは、テストファイルシンクの 'AutoFlush'パラメータをサポートしています。私が見る限り、正しく設定されています。私が持っている1つのアイデアは、アプリケーションがすぐに終了し、シンクが非同期(非同期がtrueに設定されているため)であるため、専用の処理レコードスレッドは、プロセスが終了する前にログレコードを処理しません。フラッシュされる。実際にファイルをできるだけ早く保存したい場合は、非同期ロギングを避ける必要があります。 –
あなたが正しいです、私はログの初期化に使用する小さな[クラス](https://github.com/oci-labs/BoostLog/)について言及していませんでした。私が使用するのは、設定ファイルからログを初期化することだけです。 しかし、私のプログラムは何時間も実行されており、すべてをロギングするのに十分な時間がありました。私はSIGTERMとSIGINTを捕まえて終了することを解決し、シャットダウン中にも最後のイベントが記録されます。 また、RotationIntervalを1分に設定しようとしました。こうすることで、実行時にもログファイルを完成させることができます。実際の解決策はありませんが、これを1時間に設定すると回避策になります。 –