0

別のプログラムから呼び出される MFC C++ ライブラリがあります。基本的に、私のライブラリは、OPOS デバイスの大きな古いクラスです。私の OPOS クラスには、静的ロガーを呼び出す他の多くのクラスがあります。ロガーは、ファイルまたはコンソールに出力します (レジストリの設定によって異なります) 先日、誰かがクラスの 2 つのインスタンスを作成し、インスタンス 1 のロギングを log1.log に、インスタンス 2 のロギングを log2.log に設定しました。

私のロギングはインスタンス 1 の静的な部分であるため、log1 に記録されます。インスタンス 2 が作成されると、インスタンス 1 とインスタンス 2 の両方が log2 に書き込みます。直せるのかと聞かれました。私はそれについて考えなければなりませんでしたが、どうすればそれができるのかわかりません。私は約 1 年間 C++ を使用してきましたが、C++ に精通しておらず、解決策が思い浮かびません。任意のヒント?

私が試したことについて少しだけ、CurrentThread、CurrentProcess、着信 DispatchID をチェックしましたが、それらは常に同じです。他の提案はありますか?

ロギングを静的から非静的に変更しなければならない場合の作業量の考え方は好きではありませんが、それが唯一の方法である場合はそうするでしょう。

4

1 に答える 1

1

静的ロギング クラス内でログ ファイル/コンソール ハンドルを維持していると思います。ロギングを非静的にするか、log-open が呼び出しルーチンが後でログ書き込みメソッドに渡すハンドルを返すようにする必要があります。

于 2013-07-13T10:51:59.080 に答える