From 9cdea2849548a2f119f25e07d16ac154e1f854c4 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 13 Feb 2019 15:35:55 +0300 Subject: [PATCH] Write logs to elasticsearch. --- .../AuthServer.Host/AuthServer.Host.csproj | 1 + .../applications/AuthServer.Host/Program.cs | 17 +++++++++++++++++ .../AuthServer.Host/appsettings.json | 3 +++ .../BackendAdminApp.Host.csproj | 1 + .../BackendAdminApp.Host/Program.cs | 17 +++++++++++++++++ .../BackendAdminApp.Host/appsettings.json | 3 +++ .../applications/PublicWebSite.Host/Program.cs | 17 +++++++++++++++++ .../PublicWebSite.Host.csproj | 1 + .../PublicWebSite.Host/appsettings.json | 3 +++ samples/MicroserviceDemo/docs/design/Overall.md | 2 ++ .../BackendAdminAppGateway.Host.csproj | 1 + .../BackendAdminAppGateway.Host/Program.cs | 17 +++++++++++++++++ .../appsettings.json | 3 +++ .../InternalGateway.Host.csproj | 1 + .../gateways/InternalGateway.Host/Program.cs | 17 +++++++++++++++++ .../InternalGateway.Host/appsettings.json | 3 +++ .../PublicWebSiteGateway.Host/Program.cs | 17 +++++++++++++++++ .../PublicWebSiteGateway.Host.csproj | 1 + .../PublicWebSiteGateway.Host/appsettings.json | 3 +++ .../BloggingService.Host.csproj | 1 + .../BloggingService.Host/Program.cs | 17 +++++++++++++++++ .../BloggingService.Host/appsettings.json | 3 +++ .../IdentityService.Host.csproj | 1 + .../IdentityService.Host/Program.cs | 17 +++++++++++++++++ .../IdentityService.Host/appsettings.json | 3 +++ .../ProductService.Host.csproj | 1 + .../ProductService.Host/Program.cs | 17 +++++++++++++++++ .../ProductService.Host/appsettings.json | 3 +++ 28 files changed, 191 insertions(+) diff --git a/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj b/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj index 324b4abf06..4f10fd61b9 100644 --- a/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj +++ b/samples/MicroserviceDemo/applications/AuthServer.Host/AuthServer.Host.csproj @@ -15,6 +15,7 @@ + diff --git a/samples/MicroserviceDemo/applications/AuthServer.Host/Program.cs b/samples/MicroserviceDemo/applications/AuthServer.Host/Program.cs index 84f71ab802..80de0a0d64 100644 --- a/samples/MicroserviceDemo/applications/AuthServer.Host/Program.cs +++ b/samples/MicroserviceDemo/applications/AuthServer.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace AuthServer.Host { @@ -10,11 +12,26 @@ namespace AuthServer.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "AuthServer") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/applications/AuthServer.Host/appsettings.json b/samples/MicroserviceDemo/applications/AuthServer.Host/appsettings.json index 17a9c1a1fe..2840491ce5 100644 --- a/samples/MicroserviceDemo/applications/AuthServer.Host/appsettings.json +++ b/samples/MicroserviceDemo/applications/AuthServer.Host/appsettings.json @@ -2,6 +2,9 @@ "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true" }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "Redis": { "Configuration": "127.0.0.1" }, diff --git a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj index f91c905ed2..01bc6634d5 100644 --- a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj +++ b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj @@ -16,6 +16,7 @@ + diff --git a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/Program.cs b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/Program.cs index 88423094cf..e0736fb529 100644 --- a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/Program.cs +++ b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace BackendAdminApp.Host { @@ -10,11 +12,26 @@ namespace BackendAdminApp.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "BackendAdminApp") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/appsettings.json b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/appsettings.json index cfc597fc38..95fc1a4664 100644 --- a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/appsettings.json +++ b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/appsettings.json @@ -9,6 +9,9 @@ "BaseUrl": "http://localhost:65115/" } }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "Redis": { "Configuration": "127.0.0.1" }, diff --git a/samples/MicroserviceDemo/applications/PublicWebSite.Host/Program.cs b/samples/MicroserviceDemo/applications/PublicWebSite.Host/Program.cs index 7512671999..d6a396ecf4 100644 --- a/samples/MicroserviceDemo/applications/PublicWebSite.Host/Program.cs +++ b/samples/MicroserviceDemo/applications/PublicWebSite.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace PublicWebSite.Host { @@ -10,11 +12,26 @@ namespace PublicWebSite.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "PublicWebSite") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/applications/PublicWebSite.Host/PublicWebSite.Host.csproj b/samples/MicroserviceDemo/applications/PublicWebSite.Host/PublicWebSite.Host.csproj index 02618191ce..1585146a68 100644 --- a/samples/MicroserviceDemo/applications/PublicWebSite.Host/PublicWebSite.Host.csproj +++ b/samples/MicroserviceDemo/applications/PublicWebSite.Host/PublicWebSite.Host.csproj @@ -16,6 +16,7 @@ + diff --git a/samples/MicroserviceDemo/applications/PublicWebSite.Host/appsettings.json b/samples/MicroserviceDemo/applications/PublicWebSite.Host/appsettings.json index edf6f8b09d..829fe9722d 100644 --- a/samples/MicroserviceDemo/applications/PublicWebSite.Host/appsettings.json +++ b/samples/MicroserviceDemo/applications/PublicWebSite.Host/appsettings.json @@ -9,6 +9,9 @@ "BaseUrl": "http://localhost:64897/" } }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "Redis": { "Configuration": "127.0.0.1" }, diff --git a/samples/MicroserviceDemo/docs/design/Overall.md b/samples/MicroserviceDemo/docs/design/Overall.md index 36c4beee58..fe75084afe 100644 --- a/samples/MicroserviceDemo/docs/design/Overall.md +++ b/samples/MicroserviceDemo/docs/design/Overall.md @@ -13,6 +13,8 @@ The goal of this work is to show how to create a complete microservice solution * [**Redis**](https://redis.io/) for distributed cache. * [**RabbitMQ**](https://www.rabbitmq.com/) for distributed messaging. * **[Serilog](https://serilog.net/)** for logging. +* **[Elasticsearch](https://www.elastic.co/products/elasticsearch)** as log database. +* **[Kibana](https://www.elastic.co/products/kibana)** as visualization tool (for logs in the Elasticsearch). ## Diagram diff --git a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj index f56612ddea..1ec9405f2a 100644 --- a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj +++ b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj @@ -15,6 +15,7 @@ + diff --git a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/Program.cs b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/Program.cs index 6e2a864021..22f634eadd 100644 --- a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/Program.cs +++ b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace BackendAdminAppGateway.Host { @@ -10,11 +12,26 @@ namespace BackendAdminAppGateway.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "BackendAdminAppGateway") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/appsettings.json b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/appsettings.json index 05ea2b0eda..3e6f45b15a 100644 --- a/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/appsettings.json +++ b/samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/appsettings.json @@ -8,6 +8,9 @@ "Authority": "http://localhost:64999", "ApiName": "BackendAdminAppGateway" }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true" }, diff --git a/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj b/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj index 1f09839dfe..8b56b69df7 100644 --- a/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj +++ b/samples/MicroserviceDemo/gateways/InternalGateway.Host/InternalGateway.Host.csproj @@ -15,6 +15,7 @@ + diff --git a/samples/MicroserviceDemo/gateways/InternalGateway.Host/Program.cs b/samples/MicroserviceDemo/gateways/InternalGateway.Host/Program.cs index 719eaa6adb..1d53275ed7 100644 --- a/samples/MicroserviceDemo/gateways/InternalGateway.Host/Program.cs +++ b/samples/MicroserviceDemo/gateways/InternalGateway.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace InternalGateway.Host { @@ -10,11 +12,26 @@ namespace InternalGateway.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "InternalGateway") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/gateways/InternalGateway.Host/appsettings.json b/samples/MicroserviceDemo/gateways/InternalGateway.Host/appsettings.json index 75df9901e2..c3863ac907 100644 --- a/samples/MicroserviceDemo/gateways/InternalGateway.Host/appsettings.json +++ b/samples/MicroserviceDemo/gateways/InternalGateway.Host/appsettings.json @@ -6,6 +6,9 @@ "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true" }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "Redis": { "Configuration": "127.0.0.1" }, diff --git a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/Program.cs b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/Program.cs index 9a3a9e5e20..e609e48821 100644 --- a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/Program.cs +++ b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace PublicWebSiteGateway.Host { @@ -10,11 +12,26 @@ namespace PublicWebSiteGateway.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "PublicWebSiteGateway") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj index 0679c1cae8..6cddd67e53 100644 --- a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj +++ b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/PublicWebSiteGateway.Host.csproj @@ -15,6 +15,7 @@ + diff --git a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/appsettings.json b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/appsettings.json index d0e8ae7f2f..1a1da067be 100644 --- a/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/appsettings.json +++ b/samples/MicroserviceDemo/gateways/PublicWebSiteGateway.Host/appsettings.json @@ -6,6 +6,9 @@ "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true" }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "Redis": { "Configuration": "127.0.0.1" }, diff --git a/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj b/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj index d99c35d7f7..10b797c0f4 100644 --- a/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj +++ b/samples/MicroserviceDemo/microservices/BloggingService.Host/BloggingService.Host.csproj @@ -15,6 +15,7 @@ + diff --git a/samples/MicroserviceDemo/microservices/BloggingService.Host/Program.cs b/samples/MicroserviceDemo/microservices/BloggingService.Host/Program.cs index 00ace4e0c4..cf6767226e 100644 --- a/samples/MicroserviceDemo/microservices/BloggingService.Host/Program.cs +++ b/samples/MicroserviceDemo/microservices/BloggingService.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace BloggingService.Host { @@ -10,11 +12,26 @@ namespace BloggingService.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "BloggingService") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json b/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json index f5e5e31282..edcaf2127f 100644 --- a/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json +++ b/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json @@ -22,6 +22,9 @@ "Scope": "InternalGateway IdentityService" } }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "Redis": { "Configuration": "127.0.0.1" }, diff --git a/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj b/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj index 2390e9b733..600dbb96df 100644 --- a/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj +++ b/samples/MicroserviceDemo/microservices/IdentityService.Host/IdentityService.Host.csproj @@ -15,6 +15,7 @@ + diff --git a/samples/MicroserviceDemo/microservices/IdentityService.Host/Program.cs b/samples/MicroserviceDemo/microservices/IdentityService.Host/Program.cs index 9f59194360..86dc91ab2a 100644 --- a/samples/MicroserviceDemo/microservices/IdentityService.Host/Program.cs +++ b/samples/MicroserviceDemo/microservices/IdentityService.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace IdentityService.Host { @@ -10,11 +12,26 @@ namespace IdentityService.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "IdentityService") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/microservices/IdentityService.Host/appsettings.json b/samples/MicroserviceDemo/microservices/IdentityService.Host/appsettings.json index 19bf738cce..9a5d60841d 100644 --- a/samples/MicroserviceDemo/microservices/IdentityService.Host/appsettings.json +++ b/samples/MicroserviceDemo/microservices/IdentityService.Host/appsettings.json @@ -6,6 +6,9 @@ "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true" }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "Redis": { "Configuration": "127.0.0.1" }, diff --git a/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj b/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj index 5965ff3ed3..cd3d255d3c 100644 --- a/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj +++ b/samples/MicroserviceDemo/microservices/ProductService.Host/ProductService.Host.csproj @@ -15,6 +15,7 @@ + diff --git a/samples/MicroserviceDemo/microservices/ProductService.Host/Program.cs b/samples/MicroserviceDemo/microservices/ProductService.Host/Program.cs index a12f96d9b1..40a6f7b5c6 100644 --- a/samples/MicroserviceDemo/microservices/ProductService.Host/Program.cs +++ b/samples/MicroserviceDemo/microservices/ProductService.Host/Program.cs @@ -1,8 +1,10 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; +using Serilog.Sinks.Elasticsearch; namespace ProductService.Host { @@ -10,11 +12,26 @@ namespace ProductService.Host { public static int Main(string[] args) { + //TODO: Temporary: it's not good to read appsettings.json here just to configure logging + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.WithProperty("Application", "ProductService") .Enrich.FromLogContext() .WriteTo.File("Logs/logs.txt") + .WriteTo.Elasticsearch( + new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"])) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6, + IndexFormat = "msdemo-log-{0:yyyy.MM}" + }) .CreateLogger(); try diff --git a/samples/MicroserviceDemo/microservices/ProductService.Host/appsettings.json b/samples/MicroserviceDemo/microservices/ProductService.Host/appsettings.json index 1bcfe310d7..e6b2f9ddcb 100644 --- a/samples/MicroserviceDemo/microservices/ProductService.Host/appsettings.json +++ b/samples/MicroserviceDemo/microservices/ProductService.Host/appsettings.json @@ -10,6 +10,9 @@ "Redis": { "Configuration": "127.0.0.1" }, + "ElasticSearch": { + "Url": "http://localhost:9200" + }, "RabbitMQ": { "Connections": { "Default": {