我已将自己的dotnet核心应用程序设置为使用SeriLog
登录到ElasticSearch Sink
。当使用ElasticSearch
和Kibana
在本地运行dotnet核心应用程序时,我有两个单独的容器,我可以将应用程序中的内容记录到Elastic中,也可以在{{ 1}}。
当我在Kibana
文件中包含我的dotnet核心应用程序时,导航到该应用程序所在的端点时,我希望它会将多条消息记录到docker-compose.yml
中,但事实并非如此。我怀疑我的应用程序在容器化后不了解如何与Elasticsearch
通信。我的Elasticsearch
看起来像这样:
版本:“ 3.0”
docker-compose.yml
services:
db:
image: mysql:5.7
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_DATABASE: chtr
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbuserpassword
volumes:
- dbdata:/var/lib/mysql
- ./_MySQL_Init_Script:/docker-entrypoint-initdb.d
restart: always
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
ports:
- "9200:9200"
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:6.2.4
container_name: kibana
ports:
- "5601:5601"
depends_on:
- elasticsearch
chtr.server:
depends_on:
- db
- kibana
image: trebias/chtr.server
build:
context: .
ports:
- "8080:80"
- "56:5601"
volumes:
dbdata:
elasticsearch-data:
是我的图像从Docker集线器中拉出。
在我的dotnet核心应用程序中转到chtr.server
:
appsettings.json
在{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Information",
"System": "Information",
"Microsoft": "Information"
}
},
"ElasticConfiguration": {
"Uri": "http://[::]:9200/"
}
}
文件中像这样创建Logger的位置:
Startup.cs
就像我在本文开头所说的那样;当我在容器中运行 var elasticSearch = Configuration["ElasticConfiguration:Uri"];
Log.Logger = new LoggerConfiguration().Enrich.FromLogContext().WriteTo.Elasticsearch(new ElasticsearchSinkOptions(
new Uri(elasticSearch)) { AutoRegisterTemplate = true }).CreateLogger();
和Kibana
并在本地运行我的应用程序时,此方法有效,但是当所有三个应用程序都在容器中时,该方法无效。
有什么建议吗?
答案 0 :(得分:2)
该服务在容器下运行,这就是为什么您应使用以下容器名称来编写日志的原因:
Appsettings.Development.json:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Information",
"System": "Information",
"Microsoft": "Information"
}
},
"ElasticConfiguration": {
"Uri": "http://elasticsearch:9200/"
}
}
您可以在此处找到一个完整的示例,该示例演示如何设置Serilog,Seq,elasticsearch和kibana以在Docker容器解决方案下协同工作。
structure logging with serilog seq and elastic search under docker