From 1d16d2b92214599aa0260d1968145b6d4ed9b0ce Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Wed, 7 Apr 2021 17:28:21 +0800 Subject: [PATCH] update Former-commit-id: f337080cf976321a8160e9b0b7411c6af2ef74f4 Former-commit-id: 1169340b533fbab5316d56dc6ac8ce3eb204e0a5 --- projects/IoTNode/Program.cs | 2 +- projects/Platform/Platform.csproj | 1 + projects/Platform/Program.cs | 42 ++++++++++++++----- projects/Platform/appsettings.Docker.json | 1 + projects/Platform/appsettings.json | 2 +- .../linux-x64/publish/docker-compose.prod.yml | 1 + .../src/linux-x64/publish/docker-compose.yml | 20 +++++++++ 7 files changed, 56 insertions(+), 13 deletions(-) diff --git a/projects/IoTNode/Program.cs b/projects/IoTNode/Program.cs index e483f94f..41ee6fb4 100644 --- a/projects/IoTNode/Program.cs +++ b/projects/IoTNode/Program.cs @@ -26,7 +26,7 @@ namespace IoTNode .WriteTo.Console() .WriteTo.File("logs/log.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 100 * 1024 * 1024, rollingInterval: RollingInterval.Infinite) .CreateLogger(); - o.AddSerilog(); + o.AddSerilog(); }) .UseStartup() .Build() diff --git a/projects/Platform/Platform.csproj b/projects/Platform/Platform.csproj index c1b5f42f..0d37bda8 100644 --- a/projects/Platform/Platform.csproj +++ b/projects/Platform/Platform.csproj @@ -14,6 +14,7 @@ + diff --git a/projects/Platform/Program.cs b/projects/Platform/Program.cs index e24696c5..b7bd0d3a 100644 --- a/projects/Platform/Program.cs +++ b/projects/Platform/Program.cs @@ -4,7 +4,11 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; +using Serilog.Formatting.Elasticsearch; +using Serilog.Formatting.Json; using Serilog.Settings.Configuration; +using Serilog.Sinks.Elasticsearch; +using Serilog.Sinks.RollingFile; using System; using System.IO; using System.Text; @@ -16,17 +20,8 @@ namespace Platform public static void Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; - - var config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true) - .Build(); - - Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(config, ConfigurationAssemblySource.AlwaysScanDllFiles) - .WriteTo.Console() - //.WriteTo.File("logs/log.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 100 * 1024 * 1024, rollingInterval: RollingInterval.Infinite) - .CreateLogger(); + IConfigurationRoot config = GetConfig(); + Log.Logger = GetLogger(config); try { @@ -49,5 +44,30 @@ namespace Platform Log.CloseAndFlush(); } } + + private static IConfigurationRoot GetConfig() + { + return new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true) + .Build(); + } + + private static ILogger GetLogger(IConfigurationRoot config) + { + return new LoggerConfiguration() + .ReadFrom.Configuration(config, ConfigurationAssemblySource.AlwaysScanDllFiles) + .WriteTo.Console() + .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(config.GetConnectionString("Log"))) + { + AutoRegisterTemplate = true, + AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7, + CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true), + FailureCallback = e => Console.WriteLine("Unable to submit event " + e.MessageTemplate), + EmitEventFailure = EmitEventFailureHandling.WriteToSelfLog |EmitEventFailureHandling.WriteToFailureSink | EmitEventFailureHandling.RaiseCallback, + FailureSink = new RollingFileSink("logs/log.json", new JsonFormatter(), 100 * 1024 * 1024, 1, Encoding.UTF8) + }) + .CreateLogger(); + } } } \ No newline at end of file diff --git a/projects/Platform/appsettings.Docker.json b/projects/Platform/appsettings.Docker.json index a9bbf375..51756158 100644 --- a/projects/Platform/appsettings.Docker.json +++ b/projects/Platform/appsettings.Docker.json @@ -2,6 +2,7 @@ "ConnectionStrings": { "SQLite": "Data Source=iotcenter.db", "MySQL": "Server=mysql;Port=3306;Database=iotcenter;Uid=root;Pwd=aA123456!;", + "Log": "http://elasticsearch:9200", "Job.MySQL": "Server=mysql;Port=3306;Database=jobserver;Uid=root;Pwd=aA123456!;Allow User Variables=True;", "PostgreSQL": "User ID=root;Host=localhost;Port=26257;Database=iotcenter;CommandTimeout=600;TrustServerCertificate=true;", "Redis": "redis:6379,password=aA123456!,allowAdmin=true", diff --git a/projects/Platform/appsettings.json b/projects/Platform/appsettings.json index c9db85fe..b9641991 100644 --- a/projects/Platform/appsettings.json +++ b/projects/Platform/appsettings.json @@ -15,7 +15,6 @@ "TablePrefix": "", "Database": "MySQL", "JobDatabase": "MySQL", - "Log": "File", "FileServer": "MinIO", "Cache": "Redis", "Profiler": false, @@ -24,6 +23,7 @@ "ConnectionStrings": { "SQLite": "Data Source=iotcenter.db", "MySQL": "Server=localhost;Port=3306;Database=iotcenter;Uid=root;Pwd=aA123456!;", + "Log": "http://localhost:9200", "Job.MySQL": "Server=localhost;Port=3306;Database=jobserver;Uid=root;Pwd=aA123456!;Allow User Variables=True;", "PostgreSQL": "User ID=root;Host=localhost;Port=26257;Database=iotcenter;CommandTimeout=600;TrustServerCertificate=true;", "Redis": "localhost:6379,password=aA123456!,allowAdmin=true", diff --git a/publish/src/linux-x64/publish/docker-compose.prod.yml b/publish/src/linux-x64/publish/docker-compose.prod.yml index 2557cd5b..84ae9b97 100644 --- a/publish/src/linux-x64/publish/docker-compose.prod.yml +++ b/publish/src/linux-x64/publish/docker-compose.prod.yml @@ -13,6 +13,7 @@ services: depends_on: - mysql - redis + - elasticsearch ports: - 8011:80 volumes: diff --git a/publish/src/linux-x64/publish/docker-compose.yml b/publish/src/linux-x64/publish/docker-compose.yml index 71ab6e25..9d5994aa 100644 --- a/publish/src/linux-x64/publish/docker-compose.yml +++ b/publish/src/linux-x64/publish/docker-compose.yml @@ -132,3 +132,23 @@ services: networks: default: ipv4_address: 172.172.0.60 + #log db + elasticsearch: + image: elasticsearch:7.12.0 + restart: always + environment: + - discovery.type=single-node + - ES_JAVA_OPTS=-Xms1g -Xmx1g + - http.cors.enabled=true + - http.cors.allow-origin=* + ports: + - 9200:9200 + - 9300:9300 + volumes: + - ./data/elasticsearch:/usr/share/elasticsearch/data + #Kibana + kibana: + image: kibana:7.12.0 + restart: always + ports: + - 5601:5601