首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OWIN自托管中的TraceListener

OWIN自托管中的TraceListener
EN

Stack Overflow用户
提问于 2013-07-30 13:26:40
回答 3查看 5.5K关注 0票数 22

我使用Microsoft.Owin.Hosting托管以下非常简单的web应用程序。

下面是启动它的号召:

代码语言:javascript
复制
WebApp.Start<PushServerStartup>("http://localhost:8080/events");

下面是我使用的启动类:

代码语言:javascript
复制
public class PushServerStartup
{
    public void Configuration(IAppBuilder app)
    {
        app.MapHubs();
    }
}

我在一个控制台应用程序中运行这个程序,这个应用程序做了很多其他事情,包括路由跟踪到某些文件等等。但是突然之间(当激活OWIN主机时),我看到写到控制台的跟踪消息通常是被路由到其他地方的。

显然,OWIN宿主框架中存在一些活动的跟踪侦听器。我怎么才能把它们关掉?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-31 10:57:26

我自己找到了解决办法。在研究了Katana源代码之后,您似乎需要注册自己的ITraceOutputFactory实例来取消默认的跟踪侦听器(它正在写入控制台)。

以下是新的开始呼叫:

代码语言:javascript
复制
var dummyFactory = new DummyFactory();
var provider = ServicesFactory.Create(
    defaultServiceProvider => defaultServiceProvider.AddInstance<ITraceOutputFactory>(dummyFactory));

using (WebApp.Start<Startup>(provider, new StartOptions("http://localhost:8090")))
{
    Console.ReadLine();
}

下面是一个虚拟的跟踪工厂(也许不是最好的解决方案,但您可以用一些更好的方法来代替它):

代码语言:javascript
复制
public class DummyFactory : ITraceOutputFactory
{
    public TextWriter Create(string outputFile)
    {
        return TextWriter.Null;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-07 15:39:31

我也有同样的问题,我在一个进程中自己托管了4个实例,每个请求都得到了4条跟踪到控制台的消息。

我只是删除了TraceListener实例

代码语言:javascript
复制
Trace.Listeners.Remove("HostingTraceListener")

"HostingTraceListener“是在owin源代码中定义的,因此我猜可能会更改- http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Hosting/Engine/HostingEngine.cs

我做这件事之后

代码语言:javascript
复制
WebApp.Start(...
票数 24
EN

Stack Overflow用户

发布于 2014-03-11 13:25:52

用最新的Katana自主机(2.1.0)代替meilke的答案:

代码语言:javascript
复制
StartOptions options = new StartOptions("http://localhost:8080/events");

// disable built-in owin tracing by using a null traceoutput
options.Settings.Add(
    typeof(Microsoft.Owin.Hosting.Tracing.ITraceOutputFactory).FullName,
    typeof(NullTraceOutputFactory).AssemblyQualifiedName);

using (WebApp.Start<PushServerStartup>(options))

NullTraceOutputFactory类似于DummyFactory,但使用StreamWriter.Null而不是StringWriter:

代码语言:javascript
复制
public class NullTraceOutputFactory : ITraceOutputFactory
{
    public TextWriter Create(string outputFile)
    {
        return StreamWriter.Null;
    }
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17948363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档