我通过登录界面然后注入客户类来抽象出来。
当自定义类记录自定义类的名称时,例如
CommonLibrary.Logging.NLog
我需要它来说出前一种方法的名称。
答案 0 :(得分:1)
如果您将wrapped-logger-type提供给NLog-Logger-Log-method,那么它将在callsite-logic中被忽略。
另见:
答案 1 :(得分:0)
我没有使用过这些版本但版本4.3.9引入了cleanNamesOfAnonymousDelegates并且版本4.5引入了cleanNamesOfAsyncContinuations
过去,我在编写日志消息之前使用了一个函数来更改记录器名称,以从stacktrace中过滤掉/忽略facade记录功能。
internal string GetCallingMethodName()
{
string result = "unknown";
StackTrace trace = new StackTrace(false);
for (int i = 0; i < trace.FrameCount; i++)
{
StackFrame frame = trace.GetFrame(i);
MethodBase method = frame.GetMethod();
Type dt = method.DeclaringType;
if (!typeof(Logger).IsAssignableFrom(dt) && method.DeclaringType.Namespace != "<NAMESPACE TO SKIP>")
{
result = string.Concat(method.DeclaringType.FullName, ".", method.Name);
break;
}
}
return result;
}
答案 2 :(得分:0)
我认为你喜欢&#34;隐藏&#34;您在堆栈跟踪中的程序集,如果是,那么您可以使用:
LogManager.AddHiddenAssembly(myAssembly)
请参阅http://nlog-project.org/documentation/v4.4.0/html/M_NLog_LogManager_AddHiddenAssembly.htm