Docker-组成不读取环境变量以将日志写入Elasticsearch

时间:2019-04-15 20:16:49

标签: elasticsearch .net-core docker-compose serilog

我正在设置docker-compose.yml文件以读取Docker映像的环境变量。我的宿主项目中引用了serilog.sinks.elasticsearch nuget程序包。

如果我使用appsettings.json在Visual Studio中运行该项目,它将读取设置并将其发送到日志到Elasticsearch,而不是通过docker-compose。

docker镜像的docker-compose.yml环境规范:

environment:
      - serilog:MinimumLevel=Verbose
      - serilog:using=Serilog.Sinks.Elasticsearch
      - serilog:WriteTo:Elasticsearch.nodeUris=http://localhost:9200

本地appsettings.json有效。

"Serilog": {
        "MinimumLevel": "Debug",
        "WriteTo": [
            {
                "Name": "Elasticsearch",
                "Args": {
                    "nodeUris": "http://localhost:9200"
                }
            }
        ]
    }

在docker-compose中设置的MinimumLevel得到尊重。

如何设置docker-compose.yml以读取接收器并将日志发送到elasticsearch数据库?

2 个答案:

答案 0 :(得分:1)

尝试使用双下划线分隔符,例如-Serilog__MinimumLevel=Verbose。双下划线是Microsoft.Extensions.Configuration.EnvironmentVariables包的默认分隔符(如果您在ConfigurationBuilder组成代码中未覆盖它)。 MSDN Environment Variables Configuration Provider reference

数组环境变量设置需要索引说明。

检查:

Serilog__Using__0=Serilog.Sinks.Elasticsearch
Serilog__WriteTo__0__Name=Elasticsearch
Serilog__WriteTo__0__Args__nodeUris=http://localhost:9200

答案 1 :(得分:1)

以下答案有效。喊@SKorolchuk。

- serilog:MinimumLevel=Verbose
- Serilog:WriteTo:0:Name=Elasticsearch
- serilog:WriteTo:0:Args:nodeUris=http://localhost:9200

Serilog__Using__0=Serilog.Sinks.Elasticsearch
Serilog__WriteTo__0__Name=Elasticsearch
Serilog__WriteTo__0__Args__nodeUris=http://localhost:9200