LoggingEventSource 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
LoggingEventSource 是连接所有基于 ILogger 的日志记录和 EventSource/EventListener 日志记录的桥。
public ref class LoggingEventSource sealed : System::Diagnostics::Tracing::EventSource
[System.Diagnostics.Tracing.EventSource(Name="Microsoft-Extensions-Logging")]
public sealed class LoggingEventSource : System.Diagnostics.Tracing.EventSource
[<System.Diagnostics.Tracing.EventSource(Name="Microsoft-Extensions-Logging")>]
type LoggingEventSource = class
inherit EventSource
Public NotInheritable Class LoggingEventSource
Inherits EventSource
- 继承
- 属性
示例
以下示例演示如何使用 EventListener 获取 ILogging 信息:
class MyEventListener : EventListener
{
protected override void OnEventSourceCreated(EventSource eventSource)
{
if (eventSource.Name == "Microsoft-Extensions-Logging")
{
// initialize a string, string dictionary of arguments to pass to the EventSource.
// Turn on loggers matching App* to Information, everything else (*) is the default level (which is EventLevel.Error)
var args = new Dictionary<string, string>() { { "FilterSpecs", "App*:Information;*" } };
// Set the default level (verbosity) to Error, and only ask for the formatted messages in this case.
EnableEvents(eventSource, EventLevel.Error, LoggingEventSource.Keywords.FormattedMessage, args);
}
}
protected override void OnEventWritten(EventWrittenEventArgs eventData)
{
// Look for the formatted message event, which has the following argument layout (as defined in the LoggingEventSource.
// FormattedMessage(LogLevel Level, int FactoryID, string LoggerName, string EventId, string FormattedMessage);
if (eventData.EventName == "FormattedMessage")
Console.WriteLine("Logger {0}: {1}", eventData.Payload[2], eventData.Payload[4]);
}
}
注解
可以通过启用名为 Microsoft-Extensions-Logging
的 EventSource 来打开此日志记录。
启用 EventSource 时,设置的 EventLevel 将明显转换为与 ILogger 关联的级别 (因此 Debug = verbose,Informational = Informational ...严重 == 严重)
这使你可以通过简单的方式按事件级别进行筛选。
若要进行精细控制,可以指定名为 的 FilterSpecs
EventSource 参数。
参数 FilterSpecs
是一个以分号分隔的规范列表。 其中每个规范都为
SPEC = // empty spec, same as *
| NAME // Just a name the level is the default level
| NAME : LEVEL // specifies level for a particular logger (can have a * suffix).
如果 Name 是 ILogger (大小写) 的名称,则 Name 可以具有 *,它充当通配符 AS A SUFFIX。 因此,Net* 将匹配以“Net”开头的任何记录器。
LEVEL 为数字或 LogLevel 字符串。 0=跟踪,1=调试,2=信息,3=警告,4=错误,严重=5 这指定关联模式的级别。 如果未指定数字(规范的第一种形式),则为 EventSource 的默认级别。
如果某个特定名称与多个模式匹配,则使用第一个匹配项。
除了 level 和 FilterSpec 参数外,还可以设置 EventSource 关键字。 请参阅下面的关键字定义,但基本上你可决定是否要使用该关键字
- Keywords.Message - 获取事件,其中包含已分析格式的数据。
- Keywords.JsonMessage - 获取一个事件,其中包含分析形式的数据,但作为 JSON blob (未按参数进行细分...)
- Keywords.FormattedMessage - 获取数据格式为字符串的事件
预计一次只打开其中一个关键字,但可以通过三种不同的方式打开它们并获取记录的相同数据。
属性
ConstructionException |
获取在事件源的构造过程中引发的任何异常。 (继承自 EventSource) |
Guid |
此事件源的唯一标识符。 (继承自 EventSource) |
Name |
从事件源中派生出来的类的友好名称。 (继承自 EventSource) |
Settings |
获取应用于此事件源的设置。 (继承自 EventSource) |
方法
事件
EventCommandExecuted |
当命令来自事件侦听器时出现。 (继承自 EventSource) |