You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core WebAPI无法向Docker部署的Elasticsearch写入Serilog日志问题排查求助

ASP.NET Core WebAPI无法向Docker部署的Elasticsearch写入Serilog日志问题排查求助

大家好,我最近碰到一个棘手的问题——我的ASP.NET Core Web API没法通过Serilog把日志写入到Docker部署的Elasticsearch中。Kibana里完全看不到任何相关数据,我查了Elasticsearch的索引,也找不到我配置的那个自定义索引,想请各位帮忙看看哪里出问题了。

已安装的NuGet包

我在项目里安装了以下两个Serilog相关的包:

  • Serilog.AspNetCore 版本8.0.0
  • Serilog.Sinks.Elasticsearch 版本9.0.3

Docker环境配置

我用docker-compose部署了Elasticsearch、Logstash(其实不确定这个是不是必须的)和Kibana,docker-compose.yaml的内容如下:

version: '3.4'

services:
  elasticsearch:
    image: elasticsearch:7.16.1
    container_name: elasticsearch
    environment:
      discovery.type: single-node
      ES_JAVA_OPTS: "-Xms512m -Xmx512m"
    ports:
      - "9200:9200"
      - "9300:9300"
    healthcheck:
      test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
      interval: 10s
      timeout: 10s
      retries: 3
    networks:
      - elastic

  logstash:
    image: logstash:7.16.1
    container_name: logstash
    environment:
      discovery.seed_hosts: logstash
      LS_JAVA_OPTS: "-Xms512m -Xmx512m"
    volumes:
      - ./logstash/pipeline/logstash-nginx.config:/usr/share/logstash/pipeline/logstash-nginx.config
      - ./logstash/nginx.log:/home/nginx.log
    ports:
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "5044:5044"
      - "9600:9600"
    depends_on:
      - elasticsearch
    networks:
      - elastic
    command: logstash -f /usr/share/logstash/pipeline/logstash-nginx.config

  kibana:
    image: kibana:7.16.1
    container_name: kibana
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - elastic

networks:
  elastic:
    driver: bridge

排查情况

我进入Elasticsearch容器查看现有索引,执行了以下命令:

docker exec -it elasticsearch bash
curl -XGET 'http://localhost:9200/_cat/indices'

返回的索引列表里没有我预期的custom-index-{0:yyyy.MM}:

green open .geoip_databases                OPKgHw3hSNCmc4r0-ioqbw 1 0  41   0    39mb    39mb
green open .apm-custom-link                mrXi9BXyRC60MSlY94IorQ 1 0   0   0    226b    226b
green open .kibana_7.16.1_001              Dth8t0rHTt2xCSgqL5JLQg 1 0 296  13   2.3mb   2.3mb
green open .apm-agent-configuration        NgOE1PhPSlS3gDcHL8I1fw 1 0   0   0    226b    226b
green open .kibana_task_manager_7.16.1_001 YWW69XjBTQSr0mknnyKqoQ 1 0  17 795 177.8kb 177.8kb

ASP.NET Core项目配置

Program.cs中的Serilog初始化

...
builder.Host.UseSerilog(
    (context, configuration) =>
        configuration.ReadFrom.Configuration(context.Configuration)
);

var app = builder.Build();
...

appsettings.json中的Serilog配置

"Serilog": {
  "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.ElasticSearch" ],
  "MinimumLevel": {
    "Default": "Verbose",
    "Override": {
      "Microsoft": "Warning",
      "System": "Warning"
    }
  },
  "WriteTo": [
    { "Name": "Console" },
    {
      "Name": "ElasticSearch",
      "Args": {
        "nodeUris": "http://elasticsearch:9200",
        "indexFormat": "custom-index-{0:yyyy.MM}",
        "autoRegisterTemplate": true
      }
    }
  ],
  "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
  "Properties": {
    "Application": "Drivers.WebApi"
  }
}

备注:内容来源于stack exchange,提问作者Anders Juul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 11:19:34