c#控制台应用程序是否有默认的ILogger?

时间:2019-01-04 20:49:03

标签: c# logging

在Java中,只需最少的仪式和零配置即可调用默认的Logger对象:

import java.util.logging.*;
public class Whatever {
    private static final Logger log = Logger.getLogger("com.foo.Whatever");
    public void doSomething() {
        log.debug("doing something");
    }
}

假设C#具有相当的等效性(默认情况下,控制台输出的ILogger可以轻松地从控制台应用程序调用,而无需花费太多的仪式,不需要第三方框架,并且基本上只是Console.WriteLine的一个薄包装。 ()),这是什么?

或者,如果没有 等效的默认等效项,是否有人可以显示一个简单的示例,说明如何在C#控制台应用程序中这样做

我的问题具体是指 ILogger

我想使用ILogger是有特定原因的-我的库最终将由Unity3d应用程序使用。我还不知道该怎么做,但是显然有某种方法可以使UnityEngine的Debug.Log Logger看起来像是非Unityy库中的ILogger。

基本上,我希望能够在库在Unity下运行时获得UnityEngine的Debug.Log的好处,而不必依赖于UnityEngine的Debug.Log来完全编译或运行 。使ILogger在控制台应用程序中工作只是漫长旅程的第一步。

2 个答案:

答案 0 :(得分:0)

没有,我不会直接引用任何第三方记录器。而是为所需的记录器定义一个接口。可能很简单

public interface ILogger
{
    Log(string message);
    LogException(Exception ex);
}

使用您自己的界面,而不是其他任何人的界面。然后,如果需要,可以使用任意数量的第三方记录器,并将它们适应您的界面。或者,您可以编写编写调试控制台输出的实现。

使用现有的库非常好,只是不要通过在类的各处注入它们的接口来使其与之耦合。

答案 1 :(得分:0)

默认值为NullLogger。无需自己实施。

有关更多上下文,请参见this article