是否可以使用 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);
我想在将字符串写入 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);