-1

メッセージをログに記録するために、他のすべてのクラスで使用されるロガー クラスを設計する必要があります。現在、各クラスでロガーのポインターを作成し、ロガーポインターを介してロガーのメソッドを呼び出してメッセージをログに記録しています。シングルトンパターンで設計したいのですが、スレッドセーフでなければなりません。誰でも良いアプローチを提案できますか。

4

1 に答える 1

1

シングルトンのことは忘れて、単に class 内のすべてを作成しますstatic。log メソッドに簡単にアクセスするためのマクロを提供したいと思うでしょう。たとえば、次のようになります。

#define logdbg(fmt, ...) Log::log(__FUNCTION__, Log::LEVEL_DEBUG, fmt, ##__VA_ARGS__)

シングルトンとして実装する場合、次のようにする必要があります。

#define logdbg(fmt, ...) Log::instance().log(__FUNCTION__, Log::LEVEL_DEBUG, fmt, ##__VA_ARGS__)

これはほとんど違いがありません。

于 2013-05-03T06:21:02.770 に答える