Une façon d'y arriver est de créer un TraceListener personnalisé. Ensuite, dans le fichier app.config, définissez le paramètre listnerDataType sur CustomTraceListenerData. Cela permet à ConsoleTraceListener d'avoir une sortie formatée. La sortie a été formatée comme prévu. Sans le formateur, toutes les valeurs ont été renvoyées. Le journal TraceListener personnalisé et le fichier app.config sont tous deux attachés.
Le code utilise 5.0.505.0 au lieu de 4.1 comme posé par la question originale.
Ce code a été pris à partir de ce site: java2s firstbricks » FirstBricks » EntLib » Logging » Extensions » ConsoleTraceListener.cs (cache). Les commentaires ont été supprimés pour rendre le code plus facile à lire sur StackOverflow et la couleur par défaut est passée du blanc au gris.
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>