登录C#时,如何学习调用当前方法的方法的名称?我知道所有这些System.Reflection.MethodBase.GetCurrentMethod(),但我想在堆栈跟踪中向下迈出一步.我考虑过解析堆栈跟踪,但我希望找到一种更清晰,更明确的方法,比如Assembly.GetCallingAssembly()方法.
无论如何,使用方法名称来丰富所有Serilog输出.
对于实例,请考虑如果我有以下内容;
Public Class MyClassName
Private Function MyFunctionName() As Boolean
Logger.Information("Hello World")
Return True
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
期望的输出如下;
2015-04-06 18:41:35.361 +10:00 [Information] [MyFunctionName] Hello World!
Run Code Online (Sandbox Code Playgroud)
实际上,完全合格的名字会很好.
2015-04-06 18:41:35.361 +10:00 [Information] [MyClassName.MyFunctionName] Hello World!
Run Code Online (Sandbox Code Playgroud)
似乎"Enrichers"仅对静态信息有用,并且每次都不起作用.
我想知道是否有可能实现过滤,我们改进对 serilog 的过滤,使其对子记录器更加具体。目前我可以过滤命名空间,但是我只想访问特定命名空间中的一种方法来记录到电子邮件,该命名空间的其余方法应保留默认日志记录。
.Filter.ByIncludingOnly(Matching.FromSource("SomeNamespace"))
Run Code Online (Sandbox Code Playgroud)
但是,我只想访问 SomeNamespace 中的 method1,而不是访问也位于同一命名空间中的 method2。有任何想法吗?
我无法使用 Serilog 级别来实现此目的。最想要的是过滤器的使用。