1

我有一个日志中的字符串行:

2020-09-07 14:41:17.268 +01:00 [Information] Hello, Serilog!

我想Information从中提取这个词string,但是,这会改变,因为它可能是debug,或任何其他已知的日志记录级别。

我也想要这条消息,]在这种情况下是Hello, Serilog!. 这也可能会发生变化,但不会比现有消息长。

字符串来自StringReader

 using (StringReader reader = new StringReader(message.ToString())) // message from StringWriter
{
    var readText = reader.ReadLine();
    Console.WriteLine(readText);
}

做这个的最好方式是什么?

4

2 回答 2

1

使用正则表达式将输出Information: Hello, Serilog!

string type;
string message;

string text = "2020-09-07 14:41:17.268 +01:00 [Information] Hello, Serilog!";
string pattern = "\\[(.*?)\\]";
var match = Regex.Match(text, pattern);
if (match.Success)
{
    type = match.Groups[1].Value;
    message = text.Substring(match.Groups[1].Index + match.Groups[1].Length + 1);
    Console.WriteLine(type + ": " + message);
}            
于 2020-09-07T14:22:23.537 回答
1

您可以按如下方式使用正则表达式:

var regex = new Regex("\\[([^\\]]+)\\]");
var match = regex.Match(readText);
if (match.Success)
{
    var value = match.Groups[1].Value;
    // value == "Information" or whatever between [ and ]
}
else
{
    // Handle pattern not matching
}
于 2020-09-07T14:11:14.543 回答