2

複数の .EXE、WCF サービス、Windows サービスなどを使用したソリューションがあります。これらすべてのログに SeriLog を使用したいのですが、これらのプロジェクトで SeriLog を直接追加したくありません。電子メール、構成などのさまざまなものを備えたFrameword dllに依存させたい...そのために、このFramework dllでラッパークラスを作成したいと考えています。私のすべてのプロジェクトは、このラッパー クラス (すでに参照している dll の一部) を参照するだけです。だから、私は次のようなものが欲しい:

public class TheLogger : Serilog.ILogger
{
    private static readonly TheLogger instance = new TheLogger();

    /// <summary>
    /// Creates the singleton instance of TheLogger class.
    /// </summary>
    static TheLogger()
    {
        // Configure SeriLog
        var log = new LoggerConfiguration().WriteTo.Console().CreateLogger();
        Log.logger = log;

        // Need to point the instance to SeriLog's implementation ????
        instance = (TheLogger)log;

    }

    private TheLogger()
    {

    }

    /// <summary>
    /// Returns the singleton instance of TheLogger class.
    /// </summary>
    public static TheLogger Instance
    {
        get
        {
            return instance;
        }
    }
}

そして、他のプロジェクトで次のような構文を使用したいと思います

TheLogger.Instance.Information("I am here");

しかし、明らかに、TheLogger には、SeriLog の Log.logger 静的ロガーによって提供される実装がありません。SeriLog への参照がなければ、Log.logger を参照できません。要約すると、問題は、SeriLog の Log.logger をどのように活用し、それを自分のクラスにラップするかということです。

4

0 に答える 0