问题标签 [tracesource]
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.
c# - 将同一应用程序的两个实例写入同一日志文件
如何从同一应用程序的两个实例写入同一文件。对于写入,我使用了来自 System.Diagnostis 命名空间的 TraceSource 类和 TraceEvent 方法。我尝试使用 Mutex 创建方法进行写入,但我的方法无法正常工作。我找不到使用互斥锁进行 TraceSource 日志记录的示例。有谁能够帮我?
我的日志类:
在我的应用程序中,我使用 InfoTraceEvent 写入日志文件。如何更改 InfoTraceEvent 以进行线程写入(由两个应用程序实例写入)?
c# - System.Diagnostics 的基于类的跟踪源
我目前正在从作为日志框架的log4netSystem.Diagnostics
迁移到命名空间,以便使用 1)已经可用的 .net 内置框架和 b)使用它的强大功能,如活动跟踪。
使用 log4net,我习惯于以基于类的方式请求记录器,例如
但是对于TraceSource
,您似乎必须在 app.config 中手动配置每个跟踪源才能使用它。没有办法创建一些共享侦听器并仅使用它们,并使用“全局过滤器”TraceEventType
等(例如EventLogListener
处理警告/错误,当设置属性“XY”时,控制台侦听器处于活动状态,否则登录到文件ETC。)
c# - OWIN 干扰 log4net
在我的应用程序中,我有以下日志记录策略/附加程序:
- DebugAppender:如果根级别为 DEBUG,则将每条匹配 DEBUG 的消息写入默认跟踪侦听器输出
- ConsoleAppender:如果应用程序模式(全局上下文属性)是“控制台”,则将 WARN 以上的每条消息写入控制台输出
- EventLogAppender:如果应用程序模式(全局上下文属性)为“服务”,则将 ERRROR 以上的每条消息写入控制台输出
- RollingFileAppender:将 INFO 上方的每条消息写入滚动平面文件
这在整个应用程序中都非常有效,直到第一行我使用该IAppBuilder
界面启动 OWIN Web 主机。一旦我调用WebApp.Start
,我注意到以下行为:
- 调试消息 (ILogger.Debug) 正在写入控制台输出
- 调试消息 (ILogger.Debug) 两次写入 VS 调试输出
经过进一步调查,我发现 OWIN 默默地将一个实例附加System.Diagnostics.DefaultTraceListener
到System.Diagnostics.TextWriterTraceListener
默认跟踪/调试输出,这可能是问题的根源。但是,DefaultTraceListener
明确声明 in app.config 并没有帮助。
有什么办法可以将 OWIN 配置得不那么……偷偷摸摸吗?
c# - 在 EventSchemaTraceListener 上设置 TraceLogRetentionOption 实际上有什么作用吗?
我想System.Diagnostics.EventSchemaTraceListener
生成一组无限的顺序文件,所以我用TraceLogRetentionOption.UnlimitedSequentialFiles
. 但是,跟踪输出被写入单个文件而不是多个连续文件。
是否有关于使用此特定日志保留选项的任何官方或非官方文档或代码示例?如果做不到这一点,我下面的代码是否不正确?
为了减少魔法配置 woo,我将在代码中完成所有操作。这是我认为它应该被初始化的方式:
然后我登录了几次:
我观察到一个event.log
文件被创建并包含所有预期的信息,但TraceLogRetentionOption
由于单个文件的大小超过了指定的最大 1kB,因此不被尊重。
我究竟做错了什么?
.net - 是否可以通过外部程序集的代码配置通过 TraceSource 的跟踪
大多数TraceSource
跟踪示例显示了它是如何通过配置完成的。我正在尝试通过代码来实现这一点。
我有一个简单的组装如下:
我在控制台应用程序中使用它。
如果我尝试通过控制台应用程序启用跟踪,我将看不到跟踪消息。
c# - TraceSource 锁定文件
我有一个存在很长时间(数小时到数月)的类的实例。它有一种将日志事件输出到文本文件的方法C:\mylog.txt
。如下
这C:\mylog.txt
可能会变得很大,我想删除它。但是我可能无法删除文件,因为它被锁定了traceSource
(通过终止进程我可以删除文件)。
如上所述,所有示例都将System.Diagnostics.TraceSource
其实例声明为静态类成员。鉴于我的情况,是否可以通过以下方法对其进行初始化?
或者是否有特定原因必须将其声明为静态?难道我做错了什么?文件锁定是预期/必需的行为吗?
c# - ConsoleTraceListener(Boolean) - 传入一个字符串
我使用这个 XML 设置了一个 TraceListener:
然后我意识到initializeData
属性是传递给指定类的构造函数的字符串。但是,构造函数ConsoleTraceListener
需要一个Boolean
. 那么为什么当它试图将该字符串转换为布尔值时,它不会在运行时抛出异常呢?
unit-testing - VS2015:测试资源管理器中的 TraceSource 输出?
我有一个正在尝试进行单元测试的库。我使用 TraceSource 写出警告详细信息,并且由于我将单元测试设置为作为构建的一部分运行,所以我希望它们在测试运行时出现 - 特别是在失败时。
我已尝试使用以下代码注册跟踪侦听器,但我的 WriteLine 内容从未被调用,尽管调用了构造函数。请参阅底部的代码 [1]。
如何让我的痕迹显示为测试运行器的一部分?
[1] 我的 testcontexttracelistener 的代码:
visual-studio-2015 - 在 MSTest 中启用跟踪源
我有一个 DLL,它有点复杂,我正在编写测试。大多数被测试的类都有自己的TraceSource
对象,用于输出跟踪信息。
项目内部MyDll
是一个App.config
文件,它ConsoleTraceListener
向所有TraceSource
.
App.config
配置为始终复制到输出目录。我不确定这是否相关。
这就是问题所在:如果我运行 1 个测试,我会从测试的输出中获得所有跟踪信息。但是,如果我运行所有测试,则只有第一个测试运行会跟踪被测代码。所有其他测试都没有任何输出。
如何让 MSTest 输出所有TraceSource
测试的所有跟踪信息?
c# - 当 vstest.console.exe 运行单元测试时,TraceSource 消息未记录到 trx 文件中
我有一个使用vstest.console.exe运行的单元测试 dll 。在单元测试中,我使用TraceSource记录了一些调试信息。当我在 Visual Studio 中运行单元测试时,我可以在输出窗口中看到日志,但是当我通过带有 /Logger:trx 选项的 vstest.console.exe 运行它时,输出日志不存在。
我尝试用静态Trace替换 TraceSource,这确实有效,并且日志显示在 trx 文件中。知道为什么 TraceSource 中的日志不显示而不是在使用 Trace 时显示吗?
我对 TraceSource 的使用如下:
App.config 有:
提前致谢。