diff --git a/Pages/Index.cshtml.cs b/Pages/Index.cshtml.cs
index 34a599f..f81bd58 100644
--- a/Pages/Index.cshtml.cs
+++ b/Pages/Index.cshtml.cs
@@ -1,4 +1,3 @@
-using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace telemetry.Pages;
@@ -14,6 +13,7 @@ public IndexModel(ILogger logger)
public void OnGet()
{
-
+ var myName = "Idris Khalikov and Vladimir Obraztsov";
+ _logger.LogInformation("Sample log. My name is {MyName}", myName);
}
}
diff --git a/Program.cs b/Program.cs
index bc275e4..c79388f 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,25 +1,71 @@
-var builder = WebApplication.CreateBuilder(args);
+using Elastic.Channels;
+using Elastic.Ingest.Elasticsearch;
+using Elastic.Ingest.Elasticsearch.DataStreams;
+using Elastic.Serilog.Sinks;
+using Elastic.Transport;
+using Serilog;
-// Add services to the container.
-builder.Services.AddRazorPages();
-var app = builder.Build();
+Log.Logger = new LoggerConfiguration()
+ .WriteTo.File(".logs/start-host-log-.txt", rollingInterval: RollingInterval.Day)
+ .WriteTo.Console()
+ .CreateBootstrapLogger();
-// Configure the HTTP request pipeline.
-if (!app.Environment.IsDevelopment())
+try
{
- app.UseExceptionHandler("/Error");
- // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
- app.UseHsts();
-}
+ var builder = WebApplication.CreateBuilder(args);
+
+ // Add services to the container.
+ builder.Services.AddRazorPages();
+
+
+ builder.Host.UseSerilog();
+
+ builder.Services.AddSerilog((services, loggerConfiguration) => loggerConfiguration
+ .Enrich.FromLogContext()
+ .WriteTo.Elasticsearch([new Uri("http://localhost:9200")], opts =>
+ {
+ opts.DataStream = new DataStreamName("logs", "telemetry-logging", "demo");
+ opts.BootstrapMethod = BootstrapMethod.Failure;
+ opts.ConfigureChannel = channelOpts =>
+ {
+ channelOpts.BufferOptions = new BufferOptions
+ {
+ ExportMaxConcurrency = 10
+ };
+ };
+ }, transport =>
+ {
+ transport.Authentication(new BasicAuthentication("elastic", "changeme")); // Basic Auth
+ })
+ .Enrich.WithProperty("Environment", builder.Environment.EnvironmentName)
+ .ReadFrom.Configuration(builder.Configuration));
-app.UseHttpsRedirection();
-app.UseStaticFiles();
+ var app = builder.Build();
-app.UseRouting();
+ // Configure the HTTP request pipeline.
+ if (!app.Environment.IsDevelopment())
+ {
+ app.UseExceptionHandler("/Error");
+ // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+ app.UseHsts();
+ }
-app.UseAuthorization();
+ app.UseHttpsRedirection();
+ app.UseStaticFiles();
-app.MapRazorPages();
+ app.UseSerilogRequestLogging();
-app.Run();
+ app.UseRouting();
+
+ app.UseAuthorization();
+
+ app.MapRazorPages();
+
+ app.Run();
+}
+catch (Exception ex)
+{
+ Log.Logger.Fatal(ex, "Unhandled exception");
+ throw;
+}
\ No newline at end of file
diff --git a/appsettings.Development.json b/appsettings.Development.json
index 770d3e9..9e26dfe 100644
--- a/appsettings.Development.json
+++ b/appsettings.Development.json
@@ -1,9 +1 @@
-{
- "DetailedErrors": true,
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- }
-}
+{}
\ No newline at end of file
diff --git a/appsettings.json b/appsettings.json
index 10f68b8..6f5ed00 100644
--- a/appsettings.json
+++ b/appsettings.json
@@ -1,9 +1,29 @@
{
- "Logging": {
- "LogLevel": {
+ "Serilog": {
+ "WriteTo": [
+ {
+ "Name": "File",
+ "Args": {
+ "path": ".logs/log-.txt",
+ "formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact",
+ "rollingInterval": "Day",
+ "rollOnFileSizeLimit": true
+ }
+ },
+ {
+ "Name": "Console",
+ "Args": {
+ "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}"
+ }
+ }
+ ],
+ "MinimumLevel": {
"Default": "Information",
- "Microsoft.AspNetCore": "Warning"
+ "Override": {
+ "Microsoft": "Warning",
+ "System": "Warning"
+ }
}
},
"AllowedHosts": "*"
-}
+}
\ No newline at end of file
diff --git a/telemetry.csproj b/telemetry.csproj
index 1b28a01..ddd14dd 100644
--- a/telemetry.csproj
+++ b/telemetry.csproj
@@ -6,4 +6,11 @@
enable
+
+
+
+
+
+
+