当日志消息包含嵌入的换行符时,此类日志消息的对齐方式在日志文件中不正确。
例如,如果我使用转换模式: [%-5level] %message%newline
并且如果我记录包含嵌入的换行符或任何其他多行日志消息的异常堆栈跟踪,则消息中的附加行从行的开头开始。
是否有可能对于每个这样的附加行,都遵循转换模式,并且文本适当缩进?
我这样做是通过以下方式:
void Log(string message, int levelsDeep)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < levelsDeep; i++)
sb.Append(" ");
string spacer = sb.ToString();
string msg = message.Replace("\r\n", "\r\n" + spacer);
msg = "\r\n" + msg + "\r\n"; //the prefix and suffix newline characters ensure that this and the next message starts in a new line and is not impacted by the 'spacer' from this message.
// call log4net functions to log the 'msg'
}