【问题标题】:Log4Net remove first 5 characters while loggingLog4Net 在记录时删除前 5 个字符
【发布时间】:2016-06-04 20:42:03
【问题描述】:

我正在使用如下的 log4net.Info 方法,

 public static void Audit(this ILog logger, string name, string field)
        {
            GlobalContext.Properties["Name"] = name;
            logger.Info(string.Format(CultureInfo.InvariantCulture, @"AUDIT: {0}", field));
        }

而我的log4net配置是,

<appender name="DatabaseAuditLogAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="Data Source=localt;Initial Catalog=TestDB;Integrated Security=True;MultipleActiveResultSets=True" />
      <commandText value="INSERT INTO [dbo].[__AuditLog] 
                   ([CreateOnDateTime],[CreateByUserId],[Name],[Field]) 
                   VALUES (@logdate, @CreateByUserId, @Name, @Field)" />
      <parameter>
        <parameterName value="@logdate" />
        <dbType value="DateTime2" />
        <size value="-1" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@CreateByUserId" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{CreateByUserId}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Name" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{Name}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Field" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
      <threshold value="INFO" />
      <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="AUDIT:" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>

这里写日志的时候是这样写的,

Audit: Some messages

我只想从消息中删除“审核:”文本,请帮助我。

【问题讨论】:

  • Audit 方法中的第二行更改为logger.Info(string.Format(CultureInfo.InvariantCulture, @"{0}", field));
  • 您好 PasioniaX,感谢您的回复。当消息以 'Audit:' 开头时,我将审核信息插入到另一个表中。请看配置。

标签: logging log4net log4net-appender


【解决方案1】:

将您的日志记录方法更改为:

    public static void Audit(this ILog logger, string name, string field)
    {
        GlobalContext.Properties["Name"] = name;
        logger.Info(string.Format(CultureInfo.InvariantCulture, @"{0}", field));
    }

(从您的字符串中删除了 AUDIT: 部分)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多