我们正在项目中将log4net
替换为Serilog
。在我们的许多类中,当使用LogManager.GetLogger
给出类名作为参数时,我们使用log4net的方法MethodBase.GetCurrentMethod().DeclaringType
,因此我们可以知道日志是在哪个类中编写的。
在Serilog中是否有任何等效的方法可以给我记录器?我知道可以选择ForContext()
来指定您所在的类,但是我仍然不知道如何在没有某种logManager的情况下获取记录器的实例。
PS
为每个类构造函数提供一个记录器作为参数(而不是使用Getlogger()
)会花费一些时间,我真的希望避免使用此选项。
答案 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!");