簡體   English   中英

C#庫記錄

[英]C# library logging

我已經使用StreamWriter實現了自己的C#記錄器類。 在我的應用程序中,我有此記錄器的公共靜態實例,並且能夠從應用程序代碼的任何部分記錄任何內容,例如:

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

我也有一些在應用程序中使用的C#dll庫。 問題是,我是否可以將日志記錄添加到庫函數中並以某種方式將其鏈接到應用程序記錄器? 我知道Trace類,但是我不知道如何鏈接它。 我想我必須跟蹤庫函數,然后在應用程序代碼中偵聽這些跟蹤,但是如何?

我不想使用任何第三方庫進行日志記錄。

有很多方法可以解決您的問題。 在這里,我描述了如何使用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");

您將能夠收聽並將其轉發到您的自定義記錄器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM