log4net方法GetLogger()在Serilog中等效

时间:2018-07-05 12:34:21

标签: c# log4net serilog

简短背景

我们正在项目中将log4net替换为Serilog。在我们的许多类中,当使用LogManager.GetLogger给出类名作为参数时,我们使用log4net的方法MethodBase.GetCurrentMethod().DeclaringType,因此我们可以知道日志是在哪个类中编写的。

我的问题是

在Serilog中是否有任何等效的方法可以给我记录器?我知道可以选择ForContext()来指定您所在的类,但是我仍然不知道如何在没有某种logManager的情况下获取记录器的实例。
PS
为每个类构造函数提供一个记录器作为参数(而不是使用Getlogger())会花费一些时间,我真的希望避免使用此选项。

3 个答案:

答案 0 :(得分:1)

研究之后,我发现Serilog中有 NO Log4Net GetLogger()等效项。

答案 1 :(得分:0)

在上下文中设置的SourceContext属性怎么样? https://github.com/serilog/serilog/issues/91

答案 2 :(得分:0)

答案是,但也许 Source Contexts 正是您所需要的。

有一个来自 Serilog 的 Wiki 的例子:

var myLog = Log.ForContext<MyClass>();
myLog.Information("Hello!");