C#库日志记录

时间:2015-09-23 21:15:46

标签: c# logging dll trace

我使用StreamWriter实现了自己的C#记录器类。在我的应用程序中,我有这个记录器的公共静态实例,我能够从应用程序代码的任何部分记录任何内容,例如:

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

我还有一些我在应用程序中使用的C#dll库。 问题是,我能够将日志记录添加到库函数中并以某种方式将其与应用程序记录器链接吗?我知道Trace课程,但我不知道如何链接它。我想我必须跟踪库函数,然后在应用程序代码中监听这些跟踪,但是如何?

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

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式解决问题。在这里,我将介绍如何通过使用Trace类来解决它,因为这是您在问题中提到的选项。请注意,这可能不是最佳方法。

首先创建一个自定义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");

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

相关问题