未执行 serilog-elasticsearch 设置中指定的管道
Pipeline specified in the settings of serilog-elasticsearch is not executed
我正在尝试使用 serilog-elasticsearch sink 将我的 .Net 应用程序的日志写入 Elasticsearch。我能够动态创建索引并写入日志。
我对 serilog-elastic 使用 app.settings 方法。以下是我的应用程序设置,在我创建日志的 .Net 项目中。
<add key="serilog:using" value="Serilog.Sinks.Elasticsearch" />
<add key="serilog:write-to:Elasticsearch.nodeUris" value="http://localhost:9200" />
<add key="serilog:write-to:Elasticsearch.indexFormat" value="app-index-{0:yyyy.MM.dd}" />
<!--<add key="serilog:write-to:Elasticsearch.templateName" value="apptemplate" />-->
<add key="serilog:write-to:Elasticsearch.typeName" value="appLogEvent" />
<add key="serilog:write-to:Elasticsearch.pipelineName" value="geoip" />
<add key="serilog:write-to:Elasticsearch.batchPostingLimit" value="50" />
<add key="serilog:write-to:Elasticsearch.emitEventFailure" value="WriteToSelfLog" />
<add key="serilog:write-to:Elasticsearch.period" value="2" />
<add key="serilog:write-to:Elasticsearch.inlineFields" value="true" />
<add key="serilog:write-to:Elasticsearch.minimumLogEventLevel" value="Debug" />
<!--<add key="serilog:write-to:Elasticsearch.bufferBaseFilename" value="C:\Logs\elastic-buffer.log" />-->
<add key="serilog:write-to:Elasticsearch.bufferFileSizeLimitBytes" value="5242880" />
<add key="serilog:write-to:Elasticsearch.bufferLogShippingInterval" value="5000" />
<!--<add key="serilog:write-to:Elasticsearch.connectionGlobalHeaders" value="Authorization=Bearer SOME-TOKEN;OtherHeader=OTHER-HEADER-VALUE" />-->
<add key="logPath" value="C:\Logs\App" />
<add key="logLevel" value="Error" />
<!-- Log Rolling: File size limit for roll over (code defaults to 50MB if not specified here) -->
<add key="logRollFileSizeLimit" value="52428800" />
<!-- Log Rolling: Number of files to retain when rolled over (defaults to 10 if not specified here) -->
<add key="logRollFileRetainCount" value="10" />
我需要在索引文档上应用插件 geoip-processor 并识别日志中的 IP 地址并将它们转换为地理代码。
我创建了管道来执行处理器并映射必要的数据。我能够使用开发控制台工具对其进行测试。但是当我通过在 app.settings 中指定在文档上应用相同的管道时,它不起作用。我创建了不同的管道并进行了尝试,但收效甚微。
以下是我的管道:
{
"geoip" : {
"description" : "Add geo ip info",
"processors" : [
{
"set" : {
"field" : "IP1",
"value" : "{{response.IP}}"
}
},
{
"trim" : {
"field" : "IP1"
}
},
{
"geoip" : {
"field" : "IP1",
"target_field" : "geo_address",
"ignore_missing" : true,
"database_file" : "GeoLite2-Country.mmdb"
}
}
]
}
}
我检查了elastic日志,没有发现任何可疑的东西。
elasticsearch的版本是:6.6.0
.Net版本是4.5.2
来自 packages.config 文件的其他版本的 serilog 相关 nuget 包是:
<package id="ElasticSearch.Net" version="5.5.0" targetFramework="net452" />
<package id="Serilog" version="2.5.0" targetFramework="net452" />
<package id="Serilog.Formatting.Compact" version="1.0.0" targetFramework="net452" />
<package id="Serilog.Settings.AppSettings" version="2.1.0" targetFramework="net452" />
<package id="Serilog.Sinks.ElasticSearch" version="5.4.0" targetFramework="net452" />
<package id="Serilog.Sinks.File" version="4.0.0" targetFramework="net452" />
<package id="Serilog.Sinks.PeriodicBatching" version="2.1.1" targetFramework="net452" />
<package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net452" />
<package id="Serilog.Sinks.Seq" version="3.3.3" targetFramework="net452" />
问题是因为elasticsearch和Serilog.Sinks.Elasticsearch的版本冲突。看来版本需要更新到最新了。我使用的是 Serilog.Sinks.Elasticsearch version=5.4.0 并更新到最新版本 (7.1.0)。管道现在按预期执行。 ElasticSearch 版本为 6.6.0.
遗憾的是,github 页面
中的任何地方都没有指定版本兼容性
我正在尝试使用 serilog-elasticsearch sink 将我的 .Net 应用程序的日志写入 Elasticsearch。我能够动态创建索引并写入日志。
我对 serilog-elastic 使用 app.settings 方法。以下是我的应用程序设置,在我创建日志的 .Net 项目中。
<add key="serilog:using" value="Serilog.Sinks.Elasticsearch" />
<add key="serilog:write-to:Elasticsearch.nodeUris" value="http://localhost:9200" />
<add key="serilog:write-to:Elasticsearch.indexFormat" value="app-index-{0:yyyy.MM.dd}" />
<!--<add key="serilog:write-to:Elasticsearch.templateName" value="apptemplate" />-->
<add key="serilog:write-to:Elasticsearch.typeName" value="appLogEvent" />
<add key="serilog:write-to:Elasticsearch.pipelineName" value="geoip" />
<add key="serilog:write-to:Elasticsearch.batchPostingLimit" value="50" />
<add key="serilog:write-to:Elasticsearch.emitEventFailure" value="WriteToSelfLog" />
<add key="serilog:write-to:Elasticsearch.period" value="2" />
<add key="serilog:write-to:Elasticsearch.inlineFields" value="true" />
<add key="serilog:write-to:Elasticsearch.minimumLogEventLevel" value="Debug" />
<!--<add key="serilog:write-to:Elasticsearch.bufferBaseFilename" value="C:\Logs\elastic-buffer.log" />-->
<add key="serilog:write-to:Elasticsearch.bufferFileSizeLimitBytes" value="5242880" />
<add key="serilog:write-to:Elasticsearch.bufferLogShippingInterval" value="5000" />
<!--<add key="serilog:write-to:Elasticsearch.connectionGlobalHeaders" value="Authorization=Bearer SOME-TOKEN;OtherHeader=OTHER-HEADER-VALUE" />-->
<add key="logPath" value="C:\Logs\App" />
<add key="logLevel" value="Error" />
<!-- Log Rolling: File size limit for roll over (code defaults to 50MB if not specified here) -->
<add key="logRollFileSizeLimit" value="52428800" />
<!-- Log Rolling: Number of files to retain when rolled over (defaults to 10 if not specified here) -->
<add key="logRollFileRetainCount" value="10" />
我需要在索引文档上应用插件 geoip-processor 并识别日志中的 IP 地址并将它们转换为地理代码。
我创建了管道来执行处理器并映射必要的数据。我能够使用开发控制台工具对其进行测试。但是当我通过在 app.settings 中指定在文档上应用相同的管道时,它不起作用。我创建了不同的管道并进行了尝试,但收效甚微。 以下是我的管道:
{
"geoip" : {
"description" : "Add geo ip info",
"processors" : [
{
"set" : {
"field" : "IP1",
"value" : "{{response.IP}}"
}
},
{
"trim" : {
"field" : "IP1"
}
},
{
"geoip" : {
"field" : "IP1",
"target_field" : "geo_address",
"ignore_missing" : true,
"database_file" : "GeoLite2-Country.mmdb"
}
}
]
}
}
我检查了elastic日志,没有发现任何可疑的东西。 elasticsearch的版本是:6.6.0 .Net版本是4.5.2 来自 packages.config 文件的其他版本的 serilog 相关 nuget 包是:
<package id="ElasticSearch.Net" version="5.5.0" targetFramework="net452" />
<package id="Serilog" version="2.5.0" targetFramework="net452" />
<package id="Serilog.Formatting.Compact" version="1.0.0" targetFramework="net452" />
<package id="Serilog.Settings.AppSettings" version="2.1.0" targetFramework="net452" />
<package id="Serilog.Sinks.ElasticSearch" version="5.4.0" targetFramework="net452" />
<package id="Serilog.Sinks.File" version="4.0.0" targetFramework="net452" />
<package id="Serilog.Sinks.PeriodicBatching" version="2.1.1" targetFramework="net452" />
<package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net452" />
<package id="Serilog.Sinks.Seq" version="3.3.3" targetFramework="net452" />
问题是因为elasticsearch和Serilog.Sinks.Elasticsearch的版本冲突。看来版本需要更新到最新了。我使用的是 Serilog.Sinks.Elasticsearch version=5.4.0 并更新到最新版本 (7.1.0)。管道现在按预期执行。 ElasticSearch 版本为 6.6.0.
遗憾的是,github 页面
中的任何地方都没有指定版本兼容性