C# 库日志记录

C# library logging

我已经使用 StreamWriter 实现了自己的 C# 记录器 class。在我的应用程序中,我有此记录器的 public 静态实例,并且我能够从应用程序代码的任何部分记录任何内容,例如:

Program.logger.Write(LogLevel.Info, "Log test");

我还有一些在应用程序中使用的 C# dll 库。 问题是,我是否可以通过应用程序记录器以某种方式将日志记录添加到库函数中并 link 它?我知道 Trace class,但我不知道如何 link。我想我必须在库函数中进行跟踪,然后在应用程序代码中监听这些跟踪,但是如何?

我不想使用任何第三方库进行日志记录。

有很多方法可以解决您的问题。在这里,我描述了如何通过使用 Trace class 来解决它,因为这是您在问题中提到的选项。请注意,这可能不是最好的方法。

首先创建自定义TraceListener:

public class MyTraceListener : TraceListener
{
    public override void Write(string message)
    {
        //Here consume your static logger
    }

    public override void WriteLine(string message)
    {
        //Here consume your static logger
    }
}

然后,在您的应用程序的入口点,像这样注册侦听器:

Trace.Listeners.Add(new MyTraceListener());

现在,如果任何代码(即使是库中的代码)像这样使用 Trace.WriteLine

Trace.WriteLine("From library");

您可以收听并转发给您的自定义记录器。