【发布时间】:2017-06-17 00:40:43
【问题描述】:
为基本 lognet 列编写 db 很好,但我添加了另一个名为“clientIp”的列并将数据设置为 Ilog 对象 bofore log 但它将与 Message 列相同的数据写入 ClintIp 列..这是我的配置和文件以及 db 屏幕截图:
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
...
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[ClientIp]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @clientip)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
...
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<parameter>
<parameterName value="@clientip" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout" />
</parameter>
</appender>
public static class Logger
{
private static ILog log {get; set;}
static Logger()
{
log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
public static void Error(object msg, string userip)
{
log4net.LogicalThreadContext.Properties["ClientIp"] = userip;
if (log.IsErrorEnabled)
{
log.Error(msg);
}
}
这里有什么问题?
已编辑: 很明显,它使用给定参数写入 db 和 for message 和 clientip:for exmp: log.Error('Your Ip is::1');我如何告诉 log4net 使用 log4net.LogicalThreadContext.Properties["ClientIp"] 作为 ClientIp 列和 log.error(message) 作为 Message 列
【问题讨论】:
标签: log4net