2010-09-01 7 views
0

Ce que j'essaie de faire est de passer plusieurs paramètres à Log.Write sans d'abord en créer une longue chaîne avec des caractères d'échappement de nouvelle ligne.Remplacer Log.Write dans la bibliothèque d'entreprise

Voici ma fonction actuelle:

public static void LogPipedEvent(string message) 
    { 
     //Split message on double pipe escape "||" 
     string newmessage = ""; 
     string[] splitMessage = Regex.Split(message, Regex.Escape("||")); 

     foreach (string line in splitMessage) 
     { 
      newmessage += "\r\n" + line; 
     } 
     Logger.Write(newmessage, "DebugCategory", 2, 4000, TraceEventType.Information, "Message"); 
    } 

Il fonctionne très bien pour ce que je besoin de le faire, mais je me demande s'il y a un moyen plus propre pour briser la partie « message » du journal et ont chaque entrée obtient sa propre ligne dans la bibliothèque Enterprise?

Répondre

2

Si vous savez que votre delimiter est || et il vous suffit de le remplacer par de nouvelles lignes, vous pouvez utiliser string.Replace:

public static void LogPipedEvent(string message) 
{ 
    Logger.Write(message.Replace("||", "\r\n"), "DebugCategory", 2, 4000, TraceEventType.Information, "Message"); 
} 
0

Si vous avez une collection d'informations que vous voulez vous connecter alors vous pourriez pensez à utiliser le ExendedProperties de LogEntry. ExtendedProperties est un dictionnaire de paires clé/valeur. Ainsi, au lieu de passer une chaîne délimitée par un canal, vous pouvez passer une chaîne et un dictionnaire et utiliser un formateur pour sortir le message dans le format désiré (la clé/valeur peut être sur sa propre ligne). Je ne suis pas sûr que cela corresponde au type de données que vous traitez, mais c'est une façon de le faire.

0

Pouvez-vous changer votre signature? Si vous avez fait ceci:

public static void LogMessage(params string[] messages) 
{ 
    string message = messages.Join("\r\n"); 
    Logger.Write(newmessage, "DebugCategory", 2, 4000, TraceEventType.Information, "Message");); 
} 

Ensuite, vous pouvez l'appeler comme ceci:

LogMessage("Message 1", "Message 2", "Message 3");