Переопределить Log.Write в Enterprise Library - PullRequest
0 голосов
/ 01 сентября 2010

Что я пытаюсь сделать, это передать несколько параметров в Log.Write без предварительного создания длинной строки из них с символами перевода строки.

Вот моя текущая функция:

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");
    }

Это прекрасно работает для того, что мне нужно, но мне интересно, есть ли более чистый способ разбить часть «сообщения» журнала, и каждая запись получает свою собственную строку в библиотеке Enterprise?

Ответы [ 3 ]

2 голосов
/ 01 сентября 2010

Если вы знаете, что ваш разделитель ||, и вам просто нужно заменить его на новые строки, вы можете использовать string.Replace:

public static void LogPipedEvent(string message)
{
    Logger.Write(message.Replace("||", "\r\n"), "DebugCategory", 2, 4000, TraceEventType.Information, "Message");
}
0 голосов
/ 07 сентября 2010

Можете ли вы изменить свою подпись?Если вы сделали это:

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

Тогда вы можете назвать это так:

LogMessage("Message 1", "Message 2", "Message 3");
0 голосов
/ 06 сентября 2010

Если у вас есть коллекция информации, которую вы хотите зарегистрировать, вы можете рассмотреть возможность использования LogEntry ExendedProperties . ExtendedProperties - это словарь пар ключ / значение.

Таким образом, вместо передачи строки, разделенной каналом, вы можете передать строку и словарь и использовать средство форматирования для вывода сообщения в нужном формате (ключ / значение out могут находиться в отдельной строке).

Я не уверен, соответствует ли это типу данных, с которыми вы имеете дело, но это способ "Enterprise Library-ish" сделать это.

...