如何使用 system.diagnostics 添加日志记录到 Windows 事件日志
How to add logging to Windows Event Log using system.diagnostics
我创建了自定义 WCF LOB 适配器。我在其中使用了 Trace class。
我希望 BizTalk 服务器将日志从该适配器写入 Windows 事件日志。
当我将以下部分添加到 BizTalk 主机配置文件时,BizTalk 没有启动。有什么问题吗?
<system.diagnostics>
<trace autoflush="true">
<sources>
<source name="AzureServiceBusClient" switchValue="Verbose, ActivityTracing">
<listeners>
<add name="AzureServiceBusTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="AzureServiceBusTraceListener" type="System.Diagnostics.EventLogTraceListener" initializeData="BizTalk Server" />
</sharedListeners>
</trace>
</system.diagnostics>
这就是我的跟踪 class 在代码中的创建方式:
//
// Initializes a new instane of Microsoft.ServiceModel.Channels.Common.AdapterTrace using the specified name for the source
//
static AdapterTrace trace = new AdapterTrace("AzureServiceBusClient");
源应该是跟踪的单独项目,而不是像您拥有的那样嵌套。我想你一定是忘了自己终止跟踪标签,然后把结束标签加进去,使之无效。
将其更正为以下应该有望解决 BizTalk 未启动的问题。
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="AzureServiceBusClient" switchValue="Verbose, ActivityTracing">
<listeners>
<add name="AzureServiceBusTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="AzureServiceBusTraceListener" type="System.Diagnostics.EventLogTraceListener" initializeData="BizTalk Server" />
</sharedListeners>
</system.diagnostics>
下面的示例来自 Diagnostic Tracing and Message Logging
<system.diagnostics>
<sources>
<source name ="System.ServiceModel" switchValue="Verbose">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name ="System.ServiceModel.MessageLogging"
switchValue="Verbose, ActivityTracing">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name ="System.Runtime.Serialization" switchValue="Verbose">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener"
traceOutputOptions="LogicalOperationStack"
initializeData="C:\log\WCFTrace.svclog" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"/>
</diagnostics>
</system.serviceModel>
我创建了自定义 WCF LOB 适配器。我在其中使用了 Trace class。 我希望 BizTalk 服务器将日志从该适配器写入 Windows 事件日志。
当我将以下部分添加到 BizTalk 主机配置文件时,BizTalk 没有启动。有什么问题吗?
<system.diagnostics>
<trace autoflush="true">
<sources>
<source name="AzureServiceBusClient" switchValue="Verbose, ActivityTracing">
<listeners>
<add name="AzureServiceBusTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="AzureServiceBusTraceListener" type="System.Diagnostics.EventLogTraceListener" initializeData="BizTalk Server" />
</sharedListeners>
</trace>
</system.diagnostics>
这就是我的跟踪 class 在代码中的创建方式:
//
// Initializes a new instane of Microsoft.ServiceModel.Channels.Common.AdapterTrace using the specified name for the source
//
static AdapterTrace trace = new AdapterTrace("AzureServiceBusClient");
源应该是跟踪的单独项目,而不是像您拥有的那样嵌套。我想你一定是忘了自己终止跟踪标签,然后把结束标签加进去,使之无效。
将其更正为以下应该有望解决 BizTalk 未启动的问题。
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="AzureServiceBusClient" switchValue="Verbose, ActivityTracing">
<listeners>
<add name="AzureServiceBusTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="AzureServiceBusTraceListener" type="System.Diagnostics.EventLogTraceListener" initializeData="BizTalk Server" />
</sharedListeners>
</system.diagnostics>
下面的示例来自 Diagnostic Tracing and Message Logging
<system.diagnostics>
<sources>
<source name ="System.ServiceModel" switchValue="Verbose">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name ="System.ServiceModel.MessageLogging"
switchValue="Verbose, ActivityTracing">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name ="System.Runtime.Serialization" switchValue="Verbose">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener"
traceOutputOptions="LogicalOperationStack"
initializeData="C:\log\WCFTrace.svclog" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"/>
</diagnostics>
</system.serviceModel>