Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP Net核心API中使用NLog的Elasticsearch日志记录失败_Api_Docker_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Asp.net Core_Nlog - Fatal编程技术网 elasticsearch,asp.net-core,nlog,Api,Docker,elasticsearch,Asp.net Core,Nlog" /> elasticsearch,asp.net-core,nlog,Api,Docker,elasticsearch,Asp.net Core,Nlog" />

ASP Net核心API中使用NLog的Elasticsearch日志记录失败

ASP Net核心API中使用NLog的Elasticsearch日志记录失败,api,docker,elasticsearch,asp.net-core,nlog,Api,Docker,elasticsearch,Asp.net Core,Nlog,我在API中使用NLog进行了一些登录Elasticsearch实例的测试。Elasticsearch实例在Docker内运行,如果使用IIS Express执行API,我可以毫无问题地登录Elasticsearch,并且可以查看创建的“logstash”索引,但是如果在Docker容器内运行API,日志永远不会到达Elasticsearch,也永远不会创建索引 我的NLog配置: <?xml version="1.0" encoding="utf-8" ?> <nlog xm

我在API中使用NLog进行了一些登录Elasticsearch实例的测试。Elasticsearch实例在Docker内运行,如果使用IIS Express执行API,我可以毫无问题地登录Elasticsearch,并且可以查看创建的“logstash”索引,但是如果在Docker容器内运行API,日志永远不会到达Elasticsearch,也永远不会创建索引

我的NLog配置:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      throwConfigExceptions="true"
      internalLogLevel="info"
      internalLogFile="c:\temp\internal-nlog-AspNetCore3.txt">

  <extensions>
    <add assembly="NLog.Targets.ElasticSearch"/>
  </extensions>

  <targets>
    <target name="ElasticSearch" xsi:type="BufferingWrapper" flushTimeout="5000">
      <target xsi:type="ElasticSearch"/>
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="ElasticSearch" />
    <logger name="Microsoft.*" maxlevel="Info" final="true" />
  </rules>
</nlog>
也许我遗漏了什么,或者我不理解容器之间的交互。

(1)您的问题没有提供关于两个容器配置的任何详细信息(一个运行应用程序,一个运行Elasticsearch)

我有一个示例记录到Elasticsearch,配置Kibana以查看结果,尽管它使用不同的记录器提供程序(Essential.LoggerProvider.Elasticsearch),但它有一个docker compose文件,显示Elasticsearch和Kibana之间的连接

相关部分展示了如何在两台docker机器之间建立网桥,以及它们之间的连接

虽然“”可能是从外部(您的IIS)到Elasticsearch的正确连接,但您必须检查它是否是API docker如何看待Elasticsearch机器的,例如Kibana如何看待上述示例中的Elasticsearch是“”

您需要使用docker配置的详细信息更新问题,例如,您运行以启动它们的命令行,或docker compose文件,等等,以了解它们无法相互看到的原因

(2) 您可能需要检查它是否真的在IIS中工作,因为NLog会创建一个索引“logstash-”似乎很不寻常。。。通常,Logstash将创建该索引,NLog应创建自己的索引,例如,log4net创建索引“log-”,Essential.LoggerProvider.Elasticsearch使用“dotnet-”等

免责声明:我是Essential.LoggerProvider.Elasticsearch

Duplicate的作者?
"ElasticsearchUrl": "http://192.168.0.9:9200",
# Docker Compose file for E-K stack
# Run with:
# docker-compose up -d

version: '3.7'

services:

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.6.1
    ...
    networks:
      - elastic-network

  kibana:
    image: docker.elastic.co/kibana/kibana-oss:7.6.1
    ...
    environment:
      ELASTICSEARCH_URL: http://elasticsearch:9200
    networks:
      - elastic-network

networks:
  elastic-network:
    driver: bridge