语义应用日志块 - 在ASP.NET应用程序中进行控制台日志记录

3
我正在我们的asp.net c#应用程序中使用Semantic Logging Application Block。我使用Visual Studio 2013进行开发。我创建了一个记录到平面文件的监听器,它可以正常工作。
但是我无法让Console.LogToConsole正常工作。也就是说,我在Visual Studio输出窗口中看不到日志消息。我已经检查了Immediate窗口,但是日志消息也无法显示。如果您有任何建议,将不胜感激。

2
我很高兴不仅是我一个人。我试图让一个简单的控制台记录器运行,但我快要疯了。我已经按照MSDN指南和其他文章的步骤进行了操作,但是没有成功。我有自己的自定义EventSource类,并在Application_Start()方法中创建了监听器,WriteEvent()调用也起作用了,但是没有输出!啊! - Amethi
你在使用Microsoft.Diagnostics.Tracing而不是System.Diagnostics.Tracing吗?这会导致我无法记录控制台日志。 - Benjol
2个回答

1

虽然有点晚了,但是你可以创建一个自定义的事件监听器,将内容写入你喜欢的地方(在这种情况下是Debug),方法如下:

    internal class MyEventListener : EventListener
    {
        protected override void OnEventSourceCreated(EventSource eventSource)
        {
            base.OnEventSourceCreated(eventSource);

            Debug.WriteLine("Listener attached to the source");
        }

        protected override void OnEventWritten(EventWrittenEventArgs eventData)
        {
            ICollection readOnlyCollectionObject = (ICollection)eventData.Payload;
            object[] payload = new ArrayList(readOnlyCollectionObject).ToArray();

            Debug.WriteLine(eventData.Message, payload);
        }
    }

然后,使用我们自定义的事件监听器,我们只需按照正常方式启动它:

var listener = new MyEventListener();
listener.EnableEvents(MyEventSource.Log, EventLevel.Informational);

MyEventSource.Log.MyEvent("Hello from the Immediate window!");

致谢:http://www.shujaat.net/2013/08/slab-reactive-event-sourcing.html(原文链接)


0

我在刚开始使用Visual Studio时遇到了相同的问题。Console.LogToConsole做了它所描述的工作,即在控制台应用程序中记录到控制台。输出或立即窗口都不是控制台。控制台看起来像一个DOS窗口。在运行ASP.Net站点时,您不会看到这个。您必须专门创建一个控制台应用程序。需要注意的一点是,如果您在Visual Studio中调试或运行控制台应用程序,有时控制台窗口会在Visual Studio后面。请查找出现在Windows任务栏中的图标。希望这可以帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接