通过接口抽象 NLog 但保留日志记录 class
Abstracting NLog via an interface but retaining the logging class
我已经通过登录接口抽象出来,然后注入客户class。
当自定义 class 记录记录器名称时,如果自定义名称 class,例如
CommonLibrary.Logging.NLog
需要它说出前面方法的名字
我没有使用过这些,但是版本 4.3.9 引入了 cleanNamesOfAnonymousDelegates,版本 4.5 引入了 cleanNamesOfAsyncContinuations
过去,我使用一个函数在写入日志消息之前更改记录器名称,以从堆栈跟踪中过滤 out/ignore 外观日志记录函数。
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;
}
我认为您喜欢 "hide" 堆栈跟踪中的程序集,如果是这样,那么您可以使用:
LogManager.AddHiddenAssembly(myAssembly)
见http://nlog-project.org/documentation/v4.4.0/html/M_NLog_LogManager_AddHiddenAssembly.htm
如果您将 wrapped-logger-type 提供给 NLog-Logger-Log-method,那么它将在 callsite-logic 中被忽略。
另请参阅:
我已经通过登录接口抽象出来,然后注入客户class。
当自定义 class 记录记录器名称时,如果自定义名称 class,例如
CommonLibrary.Logging.NLog
需要它说出前面方法的名字
我没有使用过这些,但是版本 4.3.9 引入了 cleanNamesOfAnonymousDelegates,版本 4.5 引入了 cleanNamesOfAsyncContinuations
过去,我使用一个函数在写入日志消息之前更改记录器名称,以从堆栈跟踪中过滤 out/ignore 外观日志记录函数。
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;
}
我认为您喜欢 "hide" 堆栈跟踪中的程序集,如果是这样,那么您可以使用:
LogManager.AddHiddenAssembly(myAssembly)
见http://nlog-project.org/documentation/v4.4.0/html/M_NLog_LogManager_AddHiddenAssembly.htm
如果您将 wrapped-logger-type 提供给 NLog-Logger-Log-method,那么它将在 callsite-logic 中被忽略。
另请参阅: