From 78f3036092209b342a9739e433d4e45fd012ec83 Mon Sep 17 00:00:00 2001 From: Denis Prokhorchik Date: Sun, 9 Jan 2022 16:21:17 +0300 Subject: [PATCH 1/5] feat(issue-123): add jsonformatter for elk --- .../O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs new file mode 100644 index 00000000..24af5dc8 --- /dev/null +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs @@ -0,0 +1,4 @@ +namespace O2NextGen.ESender.Api.Logging +{ + +} \ No newline at end of file From 3f3eceebdb8409b1abd128d50f57ffd9086bd22e Mon Sep 17 00:00:00 2001 From: Denis Prokhorchik <70954129+live-dev999@users.noreply.github.com> Date: Sun, 9 Jan 2022 16:22:51 +0300 Subject: [PATCH 2/5] feat(issue-123): update jsonformatter for elk --- .../Logging/ElasticJsonFormatter.cs | 96 ++++++++++++++++++- 1 file changed, 94 insertions(+), 2 deletions(-) diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs index 24af5dc8..4eecc8ab 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs @@ -1,4 +1,96 @@ namespace O2NextGen.ESender.Api.Logging { - -} \ No newline at end of file + public class ElasticJsonFormatter : ITextFormatter + { + private const string Prefix = "[ELASTIC]"; + + private readonly NamingStrategy namingStrategy; + private readonly JsonValueFormatter formatter; + private readonly string type; + + public ElasticJsonFormatter(NamingStrategy namingStrategy, JsonValueFormatter formatter, string type) + { + this.namingStrategy = namingStrategy; + this.formatter = formatter; + this.type = type; + } + + public ElasticJsonFormatter() + : this(new CamelCaseNamingStrategy(), new JsonValueFormatter("$type"), "commspoint") + { + } + + public void Format(LogEvent logEvent, TextWriter output) + { + output.Write(Prefix); + FormatBody(logEvent, output); + output.WriteLine(); + } + + private void FormatBody(LogEvent logEvent, TextWriter output) + { + // add json body + var writer = new JsonTextWriter(output); + writer.WriteStartObject(); + + // write level + writer.WritePropertyName("level"); + writer.WriteValue(FormatLogLevel(logEvent.Level)); + + // write type + writer.WritePropertyName("type"); + writer.WriteValue(type); + + // write timestamp + writer.WritePropertyName("timestamp"); + writer.WriteValue(logEvent.Timestamp.UtcDateTime); + + // write message + writer.WritePropertyName("message"); + writer.WriteValue(logEvent.RenderMessage()); + + // write exception if exists + if (logEvent.Exception != null) + { + writer.WritePropertyName("exception"); + writer.WriteValue(logEvent.Exception.ToString()); + } + + // write properties + writer.WritePropertyName("properties"); + writer.WriteStartObject(); + foreach (var property in logEvent.Properties) + { + var propertyName = namingStrategy.GetPropertyName(property.Key, false); + writer.WritePropertyName(propertyName); + + using (var stringWriter = new StringWriter()) + { + formatter.Format(property.Value, stringWriter); + writer.WriteRawValue(stringWriter.ToString()); + } + } + + writer.WriteEndObject(); + writer.Flush(); + } + + private static string FormatLogLevel(LogEventLevel level) + { + switch (level) + { + case LogEventLevel.Verbose: + return "TRACE"; + case LogEventLevel.Debug: + return "DEBUG"; + case LogEventLevel.Warning: + return "WARNING"; + case LogEventLevel.Error: + case LogEventLevel.Fatal: + return "ERROR"; + default: + return "INFO"; + } + } + } +} From 5ffbda065654e609ac3cdbb2d24ef1fa824174ad Mon Sep 17 00:00:00 2001 From: Denis Prokhorchik <70954129+live-dev999@users.noreply.github.com> Date: Sun, 9 Jan 2022 16:24:08 +0300 Subject: [PATCH 3/5] feat(issue-123): update program.cs --- src/Services/e-sender/O2NextGen.ESender.Api/Program.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs index e32e2c25..d83d29f8 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs @@ -46,7 +46,10 @@ public static async Task Main(string[] args) public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) - .UseSerilog() + .UseSerilog((context, configuration) => + { + configuration.ReadFrom.Configuration(context.Configuration); + }); .UseStartup(); } } From fbb23ef1fe9bf38eee6dc2febd86c4492e9e9d85 Mon Sep 17 00:00:00 2001 From: Denis Prokhorchik <70954129+live-dev999@users.noreply.github.com> Date: Sun, 9 Jan 2022 16:26:53 +0300 Subject: [PATCH 4/5] feat(issue-123): update appsettings.json --- .../O2NextGen.ESender.Api/appsettings.json | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json b/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json index 76e2ab2a..f4aae81e 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json +++ b/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json @@ -1,4 +1,24 @@ { + "Serilog": { + "Enrich": [ + "FromLogContext" + ], + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "Logs/log.txt", + "formatter": "O2NextGen.ESender.Api.Logging.ElasticJsonFormatter, O2NextGen.ESender.Api" + } + }, + { + "Name": "Console", + "Args": { + "formatter": "O2NextGen.ESender.Api.Logging.ElasticJsonFormatter, O2NextGen.ESender.Api" + } + } + ] + }, "Logging": { "IncludeScopes": false, "LogLevel": { From 57d55468ac118071b91508b9e893caf37ac4d4d5 Mon Sep 17 00:00:00 2001 From: Denis Prokhorchik Date: Sun, 9 Jan 2022 16:38:45 +0300 Subject: [PATCH 5/5] feat(issue-123): update classes with serilog --- .../Controllers/EmailSenderController.cs | 4 ++-- .../Controllers/VersionController.cs | 6 +++++- .../Logging/ElasticJsonFormatter.cs | 7 +++++++ .../e-sender/O2NextGen.ESender.Api/Program.cs | 18 +++++++++--------- .../e-sender/O2NextGen.ESender.Api/Startup.cs | 1 - .../O2NextGen.ESender.Api/appsettings.json | 5 +---- 6 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/EmailSenderController.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/EmailSenderController.cs index 0c92b6cd..7c0a7c05 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/EmailSenderController.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/EmailSenderController.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using O2NextGen.ESender.Api.Models; @@ -7,7 +7,7 @@ namespace O2NextGen.ESender.Api.Controllers { [Route("emailsender")] public class EmailSenderController : Controller - { + { private static long _currentCertificateId = 1; private static List _mailLetters = new List() diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/VersionController.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/VersionController.cs index 6a7a8cd1..877533c8 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/VersionController.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Controllers/VersionController.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; namespace O2NextGen.ESender.Api.Controllers { @@ -12,15 +13,17 @@ public class VersionController : ControllerBase #region Fields private readonly IHostingEnvironment _environment; + private readonly ILogger _logger; #endregion #region Ctors - public VersionController(IHostingEnvironment environment) + public VersionController(IHostingEnvironment environment, ILogger logger) { _environment = environment; + _logger = logger; } #endregion @@ -29,6 +32,7 @@ public VersionController(IHostingEnvironment environment) public object Index() { var exVersion = Assembly.GetExecutingAssembly().GetName().Version; + _logger.LogInformation($"get version - {exVersion}"); return new { Environment = _environment.EnvironmentName, diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs index 4eecc8ab..5b3a9dd5 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Logging/ElasticJsonFormatter.cs @@ -1,3 +1,10 @@ +using System.IO; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using Serilog.Events; +using Serilog.Formatting; +using Serilog.Formatting.Json; + namespace O2NextGen.ESender.Api.Logging { public class ElasticJsonFormatter : ITextFormatter diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs index d83d29f8..73dec053 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Program.cs @@ -17,14 +17,14 @@ public static async Task Main(string[] args) { try { - Log.Logger = new LoggerConfiguration() - .Enrich.FromLogContext() -#if DEBUG - .WriteTo.File("Logs/system_logs.txt") -#endif - .WriteTo.Console() - - .CreateLogger(); +// Log.Logger = new LoggerConfiguration() +// .Enrich.FromLogContext() +// #if DEBUG +// .WriteTo.File("Logs/system_logs.txt") +// #endif +// .WriteTo.Console() +// +// .CreateLogger(); var host = CreateWebHostBuilder(args).Build(); Log.Information($"############### {AppName} ##############"); @@ -49,7 +49,7 @@ public static IWebHostBuilder CreateWebHostBuilder(string[] args) => .UseSerilog((context, configuration) => { configuration.ReadFrom.Configuration(context.Configuration); - }); + }) .UseStartup(); } } diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs index b459e2f5..85591c25 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs @@ -33,7 +33,6 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseHsts(); } - app.UseHttpsRedirection(); app.UseMvc(); } diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json b/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json index f4aae81e..aeed1695 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json +++ b/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json @@ -12,10 +12,7 @@ } }, { - "Name": "Console", - "Args": { - "formatter": "O2NextGen.ESender.Api.Logging.ElasticJsonFormatter, O2NextGen.ESender.Api" - } + "Name": "Console" } ] },