ログ メッセージに改行文字が含まれている場合、そのようなログ メッセージの配置はログ ファイル内で適切ではありません。
たとえば、変換パターンを使用している場合: [%-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'
}