问题标签 [tracelistener]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
789 浏览

.net - 我可以将 .NET TraceListener 附加到外部运行的进程吗?

我正在开发一个应用程序调度程序,它将使用 System.Diagnostics.Process 运行其他应用程序。外部应用程序有多种类型(有些是 .NET,有些不是)。对于那些启用了跟踪日志记录的外部应用程序,有没有办法可以附加父/调用应用程序的跟踪侦听器来监听子/被调用应用程序的所有跟踪输出并将其记录到父应用程序的跟踪输出?

这主要不是为了调试目的。这更多是为了跟踪来自所有各种计划应用程序的跟踪输出,尽可能将其收集到一个地方。

调度程序应用程序仍处于早期设计阶段,但将是 .NET,我正试图在深入探讨之前解决潜在的设计问题。

澄清一点:我需要一个解决方案,它可以成为 .NET 代码中调度程序应用程序的集成部分。我不能依赖外部应用程序来捕获跟踪。

0 投票
1 回答
651 浏览

types - 无法在 Enterprise Library 4.1 中使用“类型选择器”窗口选择 CustomTraceListener

我在类库中创建了一个自定义跟踪 Liastener:

它编译得很好。

然后,在 Enterprise Library 4.1 中,我创建了新的自定义 TraceListener 并按下 TraceListener 属性中的“类型”按钮以打开“类型选择器”窗口。

我按下“从文件加载”按钮并浏览到自定义跟踪侦听器类库并从类库的 Bin->Debug 文件夹中选择 dll。

但它不起作用,我收到消息:

“在程序集 'SendMailTraceListener' 中找不到实现或继承自基本类型 'Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.CustomTraceListener' 的类型。”

为什么 ?!!!

0 投票
3 回答
4265 浏览

c# - System.TraceListener 如何在消息前添加进程名称?

我一直在研究使用 System.Diagnostics.Trace 进行日志记录是一个非常基本的应用程序。通常它可以完成我需要做的所有事情。缺点是如果我打电话

输出是“SomeApp.Exe 信息:0:一些信息”。最初这让我很开心,但现在不再。我只想将“一些信息”输出到控制台。所以我想写一个自定义的 TraceListener,而不是使用内置的 ConsoleTraceListener,会解决这个问题。我可以看到我想要第二个冒号之后的所有文本的特定格式。这是我尝试看看这是否可行。

如果我输出 firstColon 的值,它总是-1。如果我设置一个断点,则消息始终只是“一些信息”。所有其他信息从何而来?

因此,我在调用 Console.WriteLine 之前查看了调用堆栈。调用我的 WriteLine 方法的方法是:System.dll!System.Diagnostics.TraceListener.TraceEvent(System.Diagnostics.TraceEventCache eventCache, string source, System.Diagnostics.TraceEventType eventType, int id, string message) + 0x33 bytes

当我使用 Reflector 查看这条消息时,一切看起来都非常简单。将字符串发送到 Console.WriteLine 后,我看不到任何更改字符串值的代码。唯一可能更改底层字符串值的方法是调用 UnsafeNativeMethods.EventWriteString,它的参数是指向消息的指针。

有谁知道这里发生了什么以及我是否可以将输出更改为只是我的消息而没有额外的绒毛。我可以将字符串“Some info”传递给 Console.WriteLine (或任何其他方法)并且输出的字符串不同,这似乎是一种邪恶的魔法。

编辑:我发现了魔法。显然这不是魔术。在调用 WriteLine 之前,Write 方法从对 WriteHeader 的调用中得到调用,这是我认为神奇发生的地方。

0 投票
1 回答
2953 浏览

c# - .Net Windows 服务和自定义跟踪侦听器

我的所有服务逻辑都封装在类库中。当我在命令行应用程序中实例化类库时,我会收到我的跟踪信息。

当我在 Windows 服务中实例化该类时,我看到我的自定义跟踪侦听器已创建日志目录并启动一个文件,但它保持 0 KB。

两个应用程序在 .config 中都有这个:

0 投票
1 回答
832 浏览

c# - System.Diagnostics.Trace.TraceListener UnsafeStringCopy 来自 ASP.NET 的异常

尝试从 ASP.NET 应用程序使用的程序集编写 Diagnostics.Trace 消息时,我收到一个奇怪的间歇性错误。它是 IIS7 上的 .NET 3.5。

代码设置是,当 web.config 指定了调试时,我添加了一个HttpResponseTraceListenerto的实例System.Diagnostics.Trace.Listeners。我正在这样做,所以在我的其他程序集中,我可以在未设置为使用 Visual Studio 进行调试的测试服务器上运行时写出调试信息。因此,在我的另一个程序集中,我使用System.Diagnostics.Trace.WriteLine输出信息,然后将其写入响应流(内联,但出于我的目的,这很好)。

错误是:

你调用的对象是空的。

相关堆栈信息为:

在 System.Web.Util.StringUtil.memcpyimpl(Byte* src, Byte* dest, Int32 len) 在 System.Web.Util.StringUtil.UnsafeStringCopy(String src, Int32 srcIndex, Char[] dest, Int32 destIndex, Int32 len)在 System.Web.HttpWriter.Write(String s) 在 System.Web.HttpResponse.Write(String s) 在 SSO.HttpResponseTraceListener.Write(String message) 在 HttpResponseTraceListener.cs:line 23 在 SSO.HttpResponseTraceListener.WriteLine(String message )在 HttpResponseTraceListener.cs:System.Diagnostics.TraceInternal.WriteLine(字符串消息)的第 30 行

TraceListener 类如下:

0 投票
1 回答
33437 浏览

asp.net - 将 tracelistener 添加到 web.config

我想在网站上使用下面的代码。config sections我应该添加哪个web.config以将输出记录到文件或 Windows 事件日志中?

0 投票
2 回答
2243 浏览

c# - 如何过滤事件ID监听的跟踪?

我正在使用下一个方法添加跟踪记录:

其中 Int32 表示事件 ID。

那么如何在 TraceSwitch 中进行过滤以仅通过指定的事件 id 进行侦听?这是不可能的吗?

0 投票
1 回答
247 浏览

.net - WCF 日志记录:为什么不为 TraceListener 调用 Close?

我正在尝试在传输级别将消息记录到我的 WCF 服务。我已经成功地按照在网上找到的一些说明进行操作,但现在我想实现自己的跟踪侦听器,以支持我们的内部日志记录解决方案。

我已经实现了一个跟踪侦听器,并使用app.config托管 WCF 服务的 Windows 服务对其进行配置。以下是我用来配置日志记录的 XML。

所有这些工作都很好。但是:我们的内部日志记录解决方案就像一个班级一样使用。该类启动一个后台线程来执行诸如日志清理、异步执行实际日志记录等操作。该类需要一个Close名为在关闭应用程序时调用的方法,该方法会停止内部处理并退出线程。

TraceListenermyTraceListener继承的类实现了一个Close方法。我已按如下方式覆盖了此方法:

只是它不起作用。的Close方法TraceListener似乎没有被调用。Close我应该怎么做才能确保在托管 WCF 服务的应用程序关闭时可以调用我的方法?

0 投票
1 回答
5748 浏览

c# - 使用跟踪侦听器将调试输出重定向到文件时出现问题

我创建了一个调试侦听器,使用以下代码将输出从 Debug/Console 窗口重定向到一个文件(带有调用堆栈):

但输出不会重定向到我指定的文件,它总是空的。

我在我的主窗体中从构造函数调用它。我打电话的地方有问题吗?

我在这里试图实现的是将调试输出窗口中的异常放置在带有调用堆栈的文件中,以便我可以找到它们并更正它们。

更新:经过一些研究,我得出一个结论,TraceListener即向 DebugListeners集合添加新的不会重定向来自 Debug/Console 的输出。它实际上只是响应Write,WriteLine等方法,默认侦听器也是如此。问题仍然存在:如何捕获 Debug/Console 窗口的输出以及如何获取那里出现的异常的堆栈跟踪?

有人有想法么?

0 投票
3 回答
1617 浏览

c# - 如何在 C# 中调用自定义跟踪侦听器上的 dispose

我编写了一个扩展 TextWriterTraceListener 的自定义跟踪侦听器。

现在,如何在侦听器上调用 Dispose()?我通过我的项目的 app.config 添加它。

尝试在终结器中添加调用 Dispose(false),但它没有被调用。奇怪的是,它在 VS 2010 中被调用,但在我运行应用程序时没有被调用,但我知道不能保证 GC 收集。(基本上这在 nunit 测试中用于记录来自测试的 System.Net.Socket 调用,我需要在所有测试运行后进行一些后期处理并将其写入日志。我在 Dispose 中添加了这部分( ) )

App.config 片段:

一些代码片段: