diff --git a/MP.Data/Controllers/MpStatsController.cs b/MP.Data/Controllers/MpStatsController.cs
index 8a01f41f..d02a1c02 100644
--- a/MP.Data/Controllers/MpStatsController.cs
+++ b/MP.Data/Controllers/MpStatsController.cs
@@ -27,7 +27,7 @@ namespace MP.Data.Controllers
{
_configuration = configuration;
dbCtx = new MoonPro_STATSContext(configuration);
- Log.Info("Avviata classe MpStatsController.MpStatsController");
+ Log.Info("Avviata classe MpStatsController");
}
#endregion Public Constructors
@@ -111,6 +111,12 @@ namespace MP.Data.Controllers
return dbResult;
}
+ public void ResetController()
+ {
+ dbCtx = new MoonPro_STATSContext(_configuration);
+ Log.Info("Effettuato reset MpStatsController");
+ }
+
///
/// Annulla modifiche su una specifica entity (cancel update)
///
diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs
index 659d7a45..123f1a8f 100644
--- a/MP.Stats/Data/MpStatsService.cs
+++ b/MP.Stats/Data/MpStatsService.cs
@@ -10,6 +10,8 @@ using MP.Data;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Newtonsoft.Json;
+using System.Diagnostics;
+using NLog;
namespace MP.Stats.Data
{
@@ -21,6 +23,7 @@ namespace MP.Stats.Data
private static ILogger _logger;
private static List ActionsList = new List();
+ private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
private readonly IDistributedCache distributedCache;
private readonly IMemoryCache memoryCache;
@@ -31,7 +34,7 @@ namespace MP.Stats.Data
///
/// Durata della cache in modalità inattiva (non acceduta) prima di venire rimossa
- /// NON estende oltre il tempo massimo di validità Abs della cache
+ /// NON estende oltre il tempo massimo di validità della cache (chAbsExp)
///
private int chSliExp = 5;
@@ -116,10 +119,15 @@ namespace MP.Stats.Data
}
else
{
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
dbResult = dbController.ActionsGetAll();
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt);
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Info($"Effettuata lettura da DB + caching per AzioniUL: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -187,10 +195,15 @@ namespace MP.Stats.Data
}
else
{
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
dbResult = dbController.StatControlliGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt);
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Info($"Effettuata lettura da DB + caching per ResControlli: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -209,10 +222,15 @@ namespace MP.Stats.Data
}
else
{
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
dbResult = dbController.StatDdbGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt);
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Info($"Effettuata lettura da DB + caching per DdbTurni: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -231,10 +249,15 @@ namespace MP.Stats.Data
}
else
{
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
dbResult = dbController.StatOdlGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt);
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Info($"Effettuata lettura da DB + caching per ODL: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -253,10 +276,15 @@ namespace MP.Stats.Data
}
else
{
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
dbResult = dbController.StatScartiGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt);
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Info($"Effettuata lettura da DB + caching per ResScarti: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -279,10 +307,15 @@ namespace MP.Stats.Data
}
else
{
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
dbResult = dbController.StatTurniOeeGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt);
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Info($"Effettuata lettura da DB + caching per TurniOee: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -301,10 +334,15 @@ namespace MP.Stats.Data
}
else
{
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
dbResult = dbController.StatUserLogGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt);
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Info($"Effettuata lettura da DB + caching per UserActionLog: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
diff --git a/MP.Stats/MP.Stats.csproj b/MP.Stats/MP.Stats.csproj
index dd1c46ad..c373b569 100644
--- a/MP.Stats/MP.Stats.csproj
+++ b/MP.Stats/MP.Stats.csproj
@@ -4,7 +4,7 @@
net5.0
MP.Stats
826e877c-ba70-4253-84cb-d0b1cafd4440
- 1.0.2105.2519
+ 1.0.2105.2619
@@ -40,6 +40,7 @@
+
diff --git a/MP.Stats/NLog.config b/MP.Stats/NLog.config
new file mode 100644
index 00000000..b98c52ca
--- /dev/null
+++ b/MP.Stats/NLog.config
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MP.Stats/Program.cs b/MP.Stats/Program.cs
index f159f7fc..1726dc14 100644
--- a/MP.Stats/Program.cs
+++ b/MP.Stats/Program.cs
@@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
+using NLog.Web;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -11,16 +12,43 @@ namespace MP.Stats
{
public class Program
{
- public static void Main(string[] args)
- {
- CreateHostBuilder(args).Build().Run();
- }
+ #region Public Methods
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
- });
+ })
+ .ConfigureLogging(logging =>
+ {
+ logging.ClearProviders();
+ logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
+ })
+ .UseNLog();
+
+ public static void Main(string[] args)
+ {
+ // inclusione NLog:
+ // https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-5
+ // https://codewithmukesh.com/blog/logging-with-nlog-in-aspnet-core/
+ var logger = NLog.Web.NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
+ try
+ {
+ logger.Info("MP.STATS Application Starting Up");
+ CreateHostBuilder(args).Build().Run();
+ }
+ catch (Exception exception)
+ {
+ logger.Error(exception, "Stopped MP.STATS program because of exception");
+ throw;
+ }
+ finally
+ {
+ NLog.LogManager.Shutdown();
+ }
+ }
+
+ #endregion Public Methods
}
-}
+}
\ No newline at end of file
diff --git a/MP.Stats/Startup.cs b/MP.Stats/Startup.cs
index 4de03884..b835f23a 100644
--- a/MP.Stats/Startup.cs
+++ b/MP.Stats/Startup.cs
@@ -1,22 +1,15 @@
+using Blazorise;
+using Blazorise.Bootstrap;
+using Blazorise.Icons.FontAwesome;
using ElmahCore.Mvc;
-using ElmahCore.Sql;
using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Hosting;
-using Microsoft.AspNetCore.HttpsPolicy;
+using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MP.Stats.Data;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Localization;
using System.Globalization;
-using Blazorise;
-using Blazorise.Bootstrap;
-using Blazorise.Icons.FontAwesome;
namespace MP.Stats
{