ASP Net核心API中使用NLog的Elasticsearch日志记录失败
我在API中使用NLog进行了一些登录Elasticsearch实例的测试。Elasticsearch实例在Docker内运行,如果使用IIS Express执行API,我可以毫无问题地登录Elasticsearch,并且可以查看创建的“logstash”索引,但是如果在Docker容器内运行API,日志永远不会到达Elasticsearch,也永远不会创建索引 我的NLog配置: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
<?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.ElasticsearchDuplicate的作者?
"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