0

我可以通过替换默认的 No Op 跟踪编写器来启用跟踪。

GlobalConfiguration.Configuration.Services.Replace(typeof(ITraceWriter), new SimpleTracer());

但是如何在服务器运行时禁用(并再次启用)?

枚举“TraceLevel”具有选项 TraceLevel.Off。有没有办法将跟踪框架表单 web api 设置为 TraceLevel.Off?

4

1 回答 1

1

看看这篇文章在这里

WebApi 不提供任何方式来配置有关其当前类别或级别的跟踪编写器。

确定当前启用哪些类别和级别是 ITraceWriter 实现的责任。Web API 框架没有跟踪配置或确定启用哪些类别和级别的概念。

这种方法的目的是依靠 ITraceWriter 实现自己的机制来配置跟踪的内容和位置。

例如,如果您使用特定于 NLog 的 ITraceWriter,则应通过 NLog 配置机制配置跟踪。

简而言之,如果您想启用和禁用跟踪或选择不记录特定级别的跟踪,则由您在SimpleTracer.

您可以创建自己的线程安全单例 TraceConfiguration(类似于 GlobalConfiguration)实现来控制跟踪配置以允许在代码中打开或关闭。

public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
{
     if(TraceConfiguration.Configuration.IsEnabled)
     {
        //trace
     }
}

或者您可以设置和访问请求对象的属性以确定是否启用跟踪。这可以由 ActionFilters 在动作和控制器上设置,甚至可以在控制器内设置。

public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
{
     if(request.Properties["SupressTracing"] as string != "true")
     {
        //trace
     }
}

或者正如文章建议的那样,如果您使用的是 NLog 或 Log4Net 等,则取决于您通过配置等设置启用的级别。

于 2012-12-12T10:59:23.180 回答