是否可以使用 log4net 框架从写入日志的消息中删除回车 returns

Is it possible to remove carriage returns from messages written to logs using the log4net framework

我想在将字符串写入 log4net 之前从字符串中删除回车 returns。

示例:

    string query = string.Format(@"select
*
from
<a table>

那里有三个 \n 所以如果我通过以下方式记录它:

log.Debug(query);

我的日志有点乱

理想的输出应该\n 被剥离。我可以这样做:

log.Debug(query.Replace("\n",""));

但是每次调用log方法都要记得做...

我不确定如何使用 web.config 中类似 printf 语法的转换模式来执行此操作。但是,如果您想一直对所有级别执行此操作,您可以下载源代码并更改内部结构。

否则,您可以像这样创建一个扩展方法:

public static void Debug(this ILog logger, string message, bool removeNewLines)
{
    if (logger == null)
        throw new ArgumentNullException("logger");

    logger.Debug(removeNewLines ? message.Replace("\n", string.Empty) : message);
} 

..然后这样称呼它:

log.Debug(query, true);

唯一的问题是您仍然必须记得调用它:

log.Debug(query, true);

而不是这个:

log.Debug(query);