在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在控制台应用程序中工作只是漫长旅程的第一步。
答案 0 :(得分:0)
没有,我不会直接引用任何第三方记录器。而是为所需的记录器定义一个接口。可能很简单
public interface ILogger
{
Log(string message);
LogException(Exception ex);
}
使用您自己的界面,而不是其他任何人的界面。然后,如果需要,可以使用任意数量的第三方记录器,并将它们适应您的界面。或者,您可以编写编写调试控制台输出的实现。
使用现有的库非常好,只是不要通过在类的各处注入它们的接口来使其与之耦合。
答案 1 :(得分:0)
默认值为NullLogger
。无需自己实施。
有关更多上下文,请参见this article。