Один из способов сделать это - создать собственный TraceListener.Затем в app.config установите для listnerDataType значение CustomTraceListenerData.Это позволяет ConsoleTraceListener иметь форматированный вывод.Вывод был отформатирован как ожидалось.Без форматера все значения были возвращены.И пользовательский TraceListener, и app.config прилагаются.
Код использует 5.0.505.0 вместо 4.1, как было задано в исходном вопросе.
Этот код был взят с этого сайта: java2s firstbricks »FirstBricks» EntLib »Ведение журнала» Расширения »ConsoleTraceListener.cs ( кеш ).Комментарии были удалены, чтобы облегчить чтение кода в StackOverflow, а цвет по умолчанию был изменен с белого на серый.
namespace Eab.Logging
{
using System;
using System.Diagnostics;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging;
using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners;
[ConfigurationElementType(typeof(CustomTraceListenerData))]
public class ConsoleTraceListener : CustomTraceListener
{
public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
{
if (data is LogEntry && Formatter != null) {
LogEntry le = (LogEntry)data;
WriteLine(Formatter.Format(le), le.Severity);
} else {
WriteLine(data.ToString());
}
}
public override void Write(string message)
{
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write(message);
}
public override void WriteLine(string message)
{
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(message);
}
public void WriteLine(string message, TraceEventType severity)
{
ConsoleColor color;
switch (severity) {
case TraceEventType.Critical:
case TraceEventType.Error:
color = ConsoleColor.Red;
break;
case TraceEventType.Warning:
color = ConsoleColor.Yellow;
break;
case TraceEventType.Information:
color = ConsoleColor.Cyan;
break;
case TraceEventType.Verbose:
default:
color = ConsoleColor.Gray;
break;
}
Console.ForegroundColor = color;
Console.WriteLine(message);
}
}
}
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
<listeners>
<!-- Namespace+class, applicationName -->
<add
type="Eab.Logging.ConsoleTraceListener, Eab.Logging"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
formatter="Simple Formatter"
name="Console Listener" />
</listeners>
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
template="{timestamp(local:[MM/dd/yyyy HH:mm:ss.fff])} : ({title}) {message}"
name="Simple Formatter" />
</formatters>
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Console Listener" />
</listeners>
</add>
</categorySources>
<specialSources>
<notProcessed switchValue="All" name="Unprocessed Category">
<listeners>
<add name="Console Listener" />
</listeners>
</notProcessed>
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Console Listener" />
</listeners>
</errors>
</specialSources>
</loggingConfiguration>