我已成功配置登录到应用程序的App.config
文件中。相关部分如下。
<system.diagnostics>
<sources>
<source name="System.Net.Http">
<listeners>
<add name="PushTraceListener" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Net.Http" value="Verbose"/>
</switches>
<sharedListeners>
<add name="PushTraceListener"
type="PushCore.Logging.LoggingTraceListener, PushCore" />
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="3000"
maxSizeOfMessageToLog="2000"/>
</diagnostics>
</system.serviceModel>
虽然可以正常工作,但我似乎无法在应用程序代码中执行相同的操作,如下所示。
var LoggingTraceListener = new LoggingTraceListener
{ Name = "PushTraceListener", Filter = new LoggingTraceFilter() };
Trace.AutoFlush = true;
var TraceSourceNames = new string[] { "System.Net.Http" };
foreach (var TraceSourceName in TraceSourceNames)
{
var TraceSource = new TraceSource(TraceSourceName, SourceLevels.Verbose);
TraceSource.Switch = new SourceSwitch(TraceSourceName, "Verbose");
TraceSource.Listeners.Add(LoggingTraceListener);
}
Trace.Listeners.Add(LoggingTraceListener);
TraceListener
本身看起来像预期的那样,因为它接收到通过Trace
编写的消息,但显然不是来自实例化的TraceSource
实例。我以某种方式认为,TraceSource
的实例化在这里是不希望的,但是必须使用现有的跟踪源。但是,我不知道该怎么做。
首先可以实现loggig吗?如果可以,怎么办?
一个合理的问题是,如果配置可以正常运行,为什么我想用代码而不是使用App.config
进行访问。原因是App.config
仅可用于实际应用程序,而不能用于Windows服务。
有什么建议吗?