elasticsearch,log4net,C#,elasticsearch,Log4net" /> elasticsearch,log4net,C#,elasticsearch,Log4net" />

C# 带有自定义参数的log4net elasticsearch日志记录

C# 带有自定义参数的log4net elasticsearch日志记录,c#,elasticsearch,log4net,C#,elasticsearch,Log4net,我正在使用log4net与ElasticSearch和Kibana。 现在,我的web.config如下所示: <log4net> <appender name="ElasticSearchAppender" type="log4net.ElasticSearch.ElasticSearchAppender, log4net.ElasticSearch"> <layout type="log4net.Layout.PatternLayout,log4net"&g

我正在使用log4net与ElasticSearch和Kibana。 现在,我的web.config如下所示:

<log4net>
<appender name="ElasticSearchAppender" type="log4net.ElasticSearch.ElasticSearchAppender, log4net.ElasticSearch">
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%date - %level - %message %property{location} %property{label} %property{mstimeload} %property{applicationid} %property{page} 
           %property{ipclient} %property{browser} %property{browsersignature} %property{appversion} %property{sessionuniquecodetag} %property{globalcountertailsloaded} 
           %property{ipserveraddress} %newline" />
  </layout>
  <connectionString value="Server=myip;Index=logstash;Port=9200;rolling=true"/>
  <lossy value="true" />
  <bufferSize value="100" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="ERROR"/>
  </evaluator>
</appender>
<root>
  <level value="ALL"/>
  <appender-ref ref="ElasticSearchAppender" />
</root>
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

log4net.ThreadContext.Properties["label"] = label;
log4net.ThreadContext.Properties["ipclient"] = ipaddress;
log4net.ThreadContext.Properties["browser"] = browserType;
log4net.ThreadContext.Properties["browsersignature"] = browserHashSignature;
log4net.ThreadContext.Properties["appversion"] = ASSettings.ApplicationVersion;
log4net.ThreadContext.Properties["mstimeload"] = msTime == null ? null : Convert.ToString(Convert.ToInt32(msTime.Value), CultureInfo.InvariantCulture);
log4net.ThreadContext.Properties["globalcountertailsloaded"] = globalCounter_tilesloaded == null ? null : Convert.ToString(globalCounter_tilesloaded.Value, CultureInfo.InvariantCulture);
log4net.ThreadContext.Properties["ipserveraddress"] = ipserveraddress;
log4net.ThreadContext.Properties["page"] = page;
log4net.ThreadContext.Properties["sessionuniquecodetag"] = sessionuniquecodetag;
log4net.ThreadContext.Properties["applicationid"] = applicationid;
log4net.ThreadContext.Properties["location"] = ASSecurity.GetLatLongFromIp(ipaddress);

log.Error(description, ex);

但我不确定这是否是最好的方法,或者是否还有其他方法。

当您将所有这些属性放入一个大字符串中时,使用其他类型有什么意义?我不是将所有属性放入一个大字符串中。。这些财产中的每一个都是独立的,实际上是kibana中的一个“列”。我可以搜索它们。我想拥有这些属性中的另一个,但不是字符串类型,如果我像现在这样做,那么这些属性就是字符串类型。我想知道如何添加其他特定类型的属性。是否尝试为索引配置模板?它可能会起作用