- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 .NET WebAPI 在 C# 中开发 Web 服务,我想将每个请求的多个事件记录到 Windows 事件日志中。由于该服务在多线程模型中运行并且每秒将接收数百个请求,因此我需要能够按请求对日志条目进行分组,以便我可以查看失败请求的所有条目。
计划是为每个具有严重级别(详细/信息/错误/警告/严重)的请求和日志事件生成一个唯一的 ID (Guid),包括每个日志条目中的 ID,以便我可以对事件进行分组.
尝试使用 NLog 后,我开始研究 System.Diagnostics.TraceSource 与 System.Diagnostics.Trace.CorrelationManager.ActivityId 的结合,在网上找到许多文章在这里。日志记录有效,但我遇到了两个问题。
我的 web.config:
<system.diagnostics>
<sources>
<source name="My.App" switchValue="Verbose, ActivityTracing">
<listeners>
<add name="eventlogListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="eventlogListener" type="System.Diagnostics.EventLogTraceListener" initializeData="MyAppCategory" />
</sharedListeners>
</system.diagnostics>
问题一
有没有办法在日志事件中同时拥有级别和事件 ID?
问题2
我想在事件查看器的“Correlation Id”列中查看 ActivityId,以便对事件进行分组。我见过一些应用程序在那里存储一个 Guid,但我还没有找到任何关于如何在 C#/.NET 中实现相同目的的文档。我注意到 TraceEvent 接受一个 object[] args 参数,不过我还没有找到任何示例。
谁能给我指出一些文档或提供一个工作示例?
谢谢
最佳答案
将 traceOutputOptions
属性添加到您的 eventlogListener
定义中:
traceOutputOptions="LogicalOperationStack"
结果元素将是:
<add name="eventlogListener" type="System.Diagnostics.EventLogTraceListener" initializeData="MyAppCategory" traceOutputOptions="LogicalOperationStack"/>
结果输出将与此非常相似:
testtrace Start: 0 : Main task started
LogicalOperationStack=Main
testtrace Information: 0 : Doing work for id 0
LogicalOperationStack=0, Main
注意输出如何为您提供嵌套的逻辑操作堆栈。在此示例中,操作 0
在单独的线程中启动。
关于c# - 使用 CorrelationManager 链接多个 TraceSource 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18884745/
当使用 System.Diagnostics TraceSource 进行日志记录/跟踪时,使用 TraceSource.TraceTransfer 和 TraceSource.TraceEvent(
我有一个存在时间很长(几小时到几个月)的类实例。它具有将日志事件输出到文本文件 C:\mylog.txt 的方法。如下 public MyClass { private static Syst
如果一个应用程序将其所有事件数据写入一个日志文件,那么拥有多个 TraceSource 有什么用处?我只是对代码中需要多个 TraceSource 的用例感到好奇。 最佳答案 有关使用 TraceSo
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
在跟踪到 TraceSource 之前,是否应该在发出跟踪本身之前检查“跟踪级别”? var ts = new TraceSource("foo"); ts.Switch.Level = Source
msdn:“此类型的任何公共(public)静态(在 Visual Basic 中共享)成员都是线程安全的。不保证任何实例成员都是线程安全的。”它只包含实例方法。 我应该如何以所有事件通过 TextW
伙计们,我想我已经失去理智了。根据 MSDN,TraceSource 是线程安全的。所以我有一个简单的控制台应用程序。在其中,我声明; private static readonly TraceSou
我在我的应用程序中使用记录器来写入文件。源、开关和监听器已在 app.config 文件中定义如下:
我遇到了一个情况,不知道能不能解决。 我已经开始向我的多线程服务添加 TraceSource 和跟踪语句,但我在处理代码中的跟踪方法的线程中遇到了锁。这会导致整个应用挂起。 我的服务配置为在控制台窗口
我尝试使用两种不同的日志级别设置 MySource 跟踪源。 FileLog 应跟踪所有内容(详细),系统事件日志应仅跟踪错误。 以下设置似乎已终止记录到 FileLog。我做错了什么?
我正在尝试在我们的应用程序中采用 Common.Logging,但是我在使用 system.diagnostics 设置它时遇到了一些问题。它适用于直接 Trace,但不适用于 TraceSource
我是 .net 跟踪的新手。 我的应用程序中有近 10 到 15 个跟踪源,共享监听器列表中有文本文件监听器和 sql server 监听器。我的问题是如果我打电话 traceSource.Trac
所以我使用 Tracesource 来记录一些错误并且不想在用户本地 Windows 文档结构中创建日志文件(类似于 System.Environment.SpecialFolder.LocalApp
我对 TraceSource.TraceEvent() 的调用有时不会写入 Azure 诊断日志。 public class WorkerRole : RoleEntryPoint { pri
这是我的 Winforms 应用程序的配置文件。目前它已将 MyTraceSource 注释掉,如果我取消注释并运行我的程序,它会按预期工作。我从我引用的库中获取输出到我的控制台。 MyTraceSo
以下代码: static void Main(string[] args) { TraceSource ts = new TraceSource("MyApplication"); t
TraceSource 类的 MSDN 文档有一个示例,说明 app.config 文件如何列出 TraceSource 实例的信息: http://msdn.microsoft.com/en-us/
我试图让我的跟踪输出出现在 Glimpse 的跟踪选项卡中;我正在使用 TraceSource 将我当前的跟踪输出到一个文件,代码如下: public static void TraceEve
我正在使用 .NET WebAPI 在 C# 中开发 Web 服务,我想将每个请求的多个事件记录到 Windows 事件日志中。由于该服务在多线程模型中运行并且每秒将接收数百个请求,因此我需要能够按请
我正在着手发布几个库,并计划使用 TraceSource 在其中实现一些诊断跟踪。我还希望允许用户附加/配置他们自己的监听器、开关、过滤器等。 由于库不附带配置文件,是否有任何现有模式可以巧妙地完成此
我是一名优秀的程序员,十分优秀!