クラスでロガー オブジェクトのようなオブジェクトを静的として定義する場合、次のようなメソッドを呼び出します。
public class Manager
{
private static ClientLogManager log = new ClientLogManager();
public void Log(string Message)
{
log.Debug(string Message);
}
}
これは、クラス ライブラリ プロジェクトで定義されます。
私の理解では、静的変数はこのアプリケーションのすべてのリクエスト間で共有されるため、ログ オブジェクトが共有されます。ただし、メソッド Debug 自体は静的ではありませんが、オブジェクトは静的であるため、このメソッドのインスタンスは 1 つだけになります。あれは正しいですか?
多くのユーザーが同時にこのコードを呼び出している場合、2 つのリクエストが同時に log.Debug メソッドを呼び出している場合、2 番目のリクエストのメッセージが 1 番目のリクエストのメッセージを上書きすることはありますか?
また、これをシングルトンに置き換えた方が良いでしょうか? リクエストごとに 1 つの Singleton オブジェクトではありませんか?
ここに ClientLogManager コードがあります
public class ClientLogManager
{
#region Member Variables
private static readonly ILog _log = LogManager.GetLogger(typeof(ClientLogManager));
#endregion
#region Constructors
public ClientLogManager()
{
}
#endregion
#region Public Methods
public void Debug(string message)
{
_log.Debug(message);
}
#endregion
}