覆盖企业库中的Log.Write

时间:2010-09-01 13:50:24

标签: c# logging enterprise-library

我要做的是将多个参数传递给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");
    }

它适用于我需要它做的事情,但我想知道是否有更简洁的方法来分解日志的“消息”部分并让每个条目在企业库中获得它自己的行?

3 个答案:

答案 0 :(得分:2)

如果您知道您的分隔符为||而您只需要用新行替换它,则可以使用string.Replace

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

答案 1 :(得分:0)

如果您有要记录的信息集合,则可以考虑使用LogEntry的ExendedProperties。 ExtendedProperties是键/值对的字典。

因此,您可以传入字符串和字典,并使用格式化程序以所需的格式输出消息(输出键/值可以在其自己的行上),而不是传入管道分隔的字符串。

我不确定这是否适合您正在处理的数据类型,但这是一种“企业图书馆”方式。

答案 2 :(得分:0)

你可以改变你的签名吗?如果你这样做了:

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