我有一个包含多个 .EXE、WCF 服务、Windows 服务等的解决方案……我想使用 SeriLog 登录所有这些,但我不希望这些项目直接添加 SeriLog。我希望他们依赖一个 Frameword dll,该 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 但将其包装在我自己的类中?