问题标签 [semantic-logging]

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 投票
1 回答
111 浏览

azure - 语义记录 In-Proc 和 Out-Proc

我在 Windows Azure 网站上使用语义日志,

我想知道使用 Azure 网站使用语义日志并将日志存储在 Azure 表存储中,Azure SQL db 是 Inproc 还是 out Proc ?

有人可以详细说明一下吗?

0 投票
2 回答
853 浏览

c# - 如何在运行时更改语义日志中的日志级别?

如何使用语义日志在运行时更改日志级别?

在我的 Global.asax Application_Startup 我有以下代码:

我的进程开始后如何更改日志级别。我的支持团队可能希望在故障排除会话期间将日志记录到 Verbose,然后在发现问题后将其关闭。他们希望在不停止或重新启动流程的情况下执行此操作。

0 投票
1 回答
587 浏览

.net-4.5 - 使用带有自定义关键字的 ETW 的语义日志记录不记录

我正在尝试使用 .Net 4.5、语义日志记录 (SLAB) EventSource 来创建带有自定义关键字的事件。我想使用进程外,并使用关键字将事件引导到日志文件或 SQL。我在单独的测试中对这个类使用了 EventSourceAnalyzer,没有例外。

我可以通过使用不同的“EventLevel”将事件“引导”到不同的接收器,但我更喜欢使用自定义关键字进行路由。

这是课堂——

然后这里是 SemanticLogging-svc.exe 的配置:

如果我删除“matchAnyKeyword”,并正确设置级别,我可以让事件进入不同的文件——我已经尝试过“2”和“0x002”,以及其他关于定义我能想到的自定义事件的事情. 我在网上搜索并研究了我能找到哪些文档。

0 投票
2 回答
315 浏览

etw - EventSource guid 的运行时配置

我们有一个场景,即一个应用程序的多个预发布版本在同一环境中运行。我们看到的问题是,由于我们EventSource的名称/guid 相同,我们无法区分日志。

是否可以通过 config 或在运行时以其他方式配置 EventSource 的名称/guid?

我们目前有一个单一构建部署管道,所以我认为构建时解决方案不适合我们。

0 投票
1 回答
98 浏览

azure - 哪些工具最适合使用 Azure 表接收器查看语义日志?

我已将我的应用程序设置为使用语义日志记录和 Azure 接收器。我在表格中看到的看起来很棒,我对我所看到的非常满意。

我的问题是我真的很想过滤和搜索这些日志。

例如,我目前正在记录一个解析 json 消息并采取相应措施的方法。解析有几个重要方面,我可以在其中记录重要信息。所有这些条目共享一个消息 ID。我希望能够轻松地按此 ID 进行排序。我有其他领域做同样的事情,但水平不同。

是否有任何工具可以用于 Azure 存储,允许我对语义日志执行这种过滤?(到目前为止我发现的最好的是 LINQPad)

0 投票
2 回答
882 浏览

c# - EventSource/Enterprise Library Logging 缓存已删除的方法,(可能在 InstrumentationManifest 中!)

精简版

如果我改变这个...

对此...

...我仍然收到日志消息,但它们已损坏。

要么消息没有到达,要么它们被我当前项目中甚至不存在的缺失/删除​​/删除方法格式化!


由于某些未知原因,特定字符串“HardymanDatabaseLog”存在问题

我认为这可能归结为在某处出现的损坏的仪器清单。

请继续阅读以了解更多信息 ...!(谢谢:o))


加长版(附图)

我有一个EnterpriseLibrary.SemanticLogging通过 nuget 包引用的简单控制台应用程序。

使用此处的示例代码,我添加了一个BasicLogger类。

当我运行我的简单应用程序时...

SemanticLogging-svc.exe...我在日志查看器控制台( )中得到以下响应

好日志

... 哪个是对的!

但是,如果我现在将EventSource属性更新为[EventSource(Name = "HardymanDatabaseLog")],并将我的属性调整SemanticLogging-svc.xml为也引用HardymanDatabaseLog...

...然后我在日志查看器控制台中得到以下响应...

坏日志

...这不仅丢失了第一条消息,而且损坏了第二条消息!

如果您仔细查看开头的EventId : 1那行,您会看到它说Message : Application Started...该消息来自何处、为何以及来自何处?!......甚至Level : Informational有点错......我的代码有Level = Critical

BasicLogger在这个问题开始之前,我在具有属性的类中创建了一个(早已删除)方法[Event(1, Message = "Application Started.", Level = EventLevel.Informational)],现在,每当我设置时,都会EventSource(Name="HardymanDatabaseLog")调用这个幻像方法。

需要明确的是......我的应用程序中的任何地方都不再存在“应用程序启动”文本(我正在使用一个全新的项目)......这个错误的唯一原因是重用了“HardymanDatabaseLog”事件源名称。


到目前为止,这是我为尝试清除导致事情出错的损坏信息所做的工作:

  • 重新启动我的电脑(标准!)
  • 删除并重新添加对企业库的所有引用(问题在不同的解决方案之间仍然存在,因此它不能是应用程序/解决方案级别的设置)
  • 停止并删除 perfmon > 数据收集器集 > 事件跟踪会话 > Microsoft-SemanticLogging-Etw-ConsoleEventSink
  • 查看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog我的应用程序是否已注册(当然在注册表中的任何地方都找不到“HardymanDatabaseLog”)
  • 睡在上面
  • System.Diagnostics.EventLog.DeleteEventSource("HardymanDatabaseLog")
  • 清理/重建/清理/构建/清理/etc/etc 解决方案
  • 在没有 Visual Studio 主机应用程序的情况下运行我的应用程序

这就是我尝试过但没有成功...

  • 确定企业库是否保留配置数据
  • 确定 .NET EventSource 是否保留配置数据
  • 重新安装企业库(仅install-packages.ps1包含在下载中)
  • 用头敲键盘

非常感谢任何和所有帮助/建议。


更新

使用 JustDecompile,我在EventSource代码中发现了一个方法,该方法使用了一个名为 a 的对象ManifestBuilder。该方法似乎构建了一个<instrumentationManifest />文档,该文档当然可以包含似乎潜伏在幻像方法中的所有信息。

也许有人可以阐明这些神奇文档在 .NET 和 Enterprise Library 的上下文中的存储位置?


更新 2

正如@Randy Levy 通过调查 SLAB 源发现的那样,可以通过删除 C:\Users\<UserName>\AppData\Local\Temp\7D2611AE-6432-4639-8B91-3E46EB56CADF. 他的回答也与这个问题有关...... SLAB,进程外:更改事件源方法的签名会导致不正确的事件记录

谢谢@Randy Levy!

0 投票
2 回答
274 浏览

etw - 未使用进程外语义日志更新 EventEntry 的架构

我编写了一个自定义 EventSource 类并添加了一个日志方法,如下所示:

我使用 SemanticLogging-svc.exe -c 来启动跟踪事件服务,在执行这个 cmd 之前我还将 SemanticLogging-svc.xml 配置为

然后我开始调用 Test() 方法。flatFileSink 将第一次将事件的正确级别记录为警告。但是,在我将属性中的Test()方法的级别更改为Critical并调用Test()方法后,flatFileSink仍然会将级别记录为Warning。这是完全错误的!我知道这是 EventEntry 的架构,它是 OnNext 方法参数。但是如果我使用进程内监听器,级别可以更新为正确的关键。

那么,如果我使用进程外,为什么级别仍然是旧级别?ETW有什么问题吗?看起来机器中有一些缓存。并且无论是在性能监视器中停止和删除事件跟踪会话,还是重新启动计算机,都无法清除此缓存。我真的很想清除这个缓存,但我不知道怎么做。

而且我知道,如果我更改了 Event Attribute 中的 Version 或将 EventSource Name 更改为另一个,则会为进程外更新级别。但我认为这不是一个好方法,因为我们可能忘记更改版本。

那么,有人可以帮助我吗?

0 投票
0 回答
628 浏览

c# - Enterprise Library 6 进程外的语义日志记录

我已经迁移到带有语义日志记录的 Enterprise Library 6。它适用于进程内日志记录,但我无法让进程外日志记录工作。SemanticLogging SVC 作为 Windows 服务启动,我知道它工作正常,因为由于错误“Semantic-SVC 服务正在使用文件”,我无法删除配置的日志文件。此外,如果我更改 SemanticLogging-svc.xml 中的文件名,它会重新创建一个新文件。但是日志文件只是空的。我正在使用https://msdn.microsoft.com/en-us/library/dn440729%28v=pandp.60%29.aspx中的示例。我打电话给 MyCompanyEvents.Log.Startup。MatchAnyKeyword 设置为 12,Level 为“always”,因此它应该记录 Startup 消息。有任何想法吗?


0 投票
1 回答
665 浏览

.net - “EventSourceException”,每个日志都没有详细信息,但日志本身仍然通过

所以我正在使用 SLAB 并且我有一个数据库侦听器注销到数据库。我正在事件源上使用单一方法进行测试。我遇到的问题是日志正按我的意愿插入到数据库中,但我在每个条目之前都会收到一个异常日志

在此处输入图像描述 在我的输出窗口中,它说的完全一样,“EventSourceException”。我很难弄清楚异常是什么,更不用说如何修复它了。

这是事件源方法:

这是监听器的初始化方式,inproc:

以及对记录器的调用:

关于问题可能是什么或至少如何获得引发的实际异常的任何想法?

未显示的其他位

  • 这个 EventSource 类是密封的
  • 我已经逐步完成并验证了这些方法GetNewActivityId()并且GetRequestId()没有抛出异常
  • 执行时异常显示在输出窗口中,WriteEventWithRelatedActivityId(...但异常没有冒泡;它似乎在基类中处理。
0 投票
1 回答
477 浏览

azure - 删除由语义日志记录创建的较旧的 Azure 表存储日志条目

我已经实现了语义日志记录以将条目记录到 azure 表存储中。现在我想从 azure 表中删除旧的日志条目(比如超过 30 天)。问题是azure表中的partitionKeys和RowKeys是动态生成的。像这样的东西

我研究并发现 PartitionKey 的格式是DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks

如何从表中获取数据以进行删除?由于 partitionKey 是动态的,我是否需要进行全表扫描?