diff --git a/src/ServerManager.WebApplication/Controllers/PluginController.cs b/src/ServerManager.WebApplication/Controllers/ApiVersion1/PluginController.cs similarity index 62% rename from src/ServerManager.WebApplication/Controllers/PluginController.cs rename to src/ServerManager.WebApplication/Controllers/ApiVersion1/PluginController.cs index 3e93a48f..04ce271b 100644 --- a/src/ServerManager.WebApplication/Controllers/PluginController.cs +++ b/src/ServerManager.WebApplication/Controllers/ApiVersion1/PluginController.cs @@ -1,7 +1,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; -namespace ServerManager.WebApplication.Controllers; +namespace ServerManager.WebApplication.Controllers.ApiVersion1; [Route("api/plugin")] [ApiController] @@ -9,8 +10,12 @@ namespace ServerManager.WebApplication.Controllers; [Produces("application/json")] public class PluginController : ControllerBase { - public PluginController() + private readonly ILogger _logger; + + public PluginController( + ILogger logger) { + _logger = logger; } // GET: api/plugin/call/00000000-0000-0000-0000-000000000000/192.168.1.1 @@ -19,10 +24,11 @@ public class PluginController : ControllerBase [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public ActionResult PluginCall_V1([FromRoute] string pluginCode, [FromRoute] string ipString) + public ActionResult PluginCall([FromRoute] string pluginCode, [FromRoute] string ipString) { try { + _logger.LogInformation("Plugin call request made {pluginCode}; {ipString}", pluginCode, ipString); return Ok(true); } catch diff --git a/src/ServerManager.WebApplication/Controllers/ServerController.cs b/src/ServerManager.WebApplication/Controllers/ApiVersion1/ServerController.cs similarity index 64% rename from src/ServerManager.WebApplication/Controllers/ServerController.cs rename to src/ServerManager.WebApplication/Controllers/ApiVersion1/ServerController.cs index ec9f33f2..140e31e5 100644 --- a/src/ServerManager.WebApplication/Controllers/ServerController.cs +++ b/src/ServerManager.WebApplication/Controllers/ApiVersion1/ServerController.cs @@ -1,12 +1,14 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using ServerManager.WebApplication.Models; using ServerManager.WebApplication.Models.ApiVersion1; using ServerManager.WebApplication.Services; -namespace ServerManager.WebApplication.Controllers; +namespace ServerManager.WebApplication.Controllers.ApiVersion1; [Route("api/server")] [ApiController] @@ -15,10 +17,14 @@ namespace ServerManager.WebApplication.Controllers; public class ServerController : ControllerBase { private readonly IServerQueryService _serverQueryService; + private readonly ILogger _logger; - public ServerController(IServerQueryService serverQueryService) + public ServerController( + IServerQueryService serverQueryService, + ILogger logger) { _serverQueryService = serverQueryService; + _logger = logger; } // GET: api/server/call/00000000-0000-0000-0000-000000000000/192.168.1.1 @@ -31,6 +37,7 @@ public class ServerController : ControllerBase { try { + _logger.LogInformation("Server call request made {pluginCode}; {ipString}", managerCode, ipString); return Ok(true); } catch @@ -52,24 +59,47 @@ public class ServerController : ControllerBase // check for valid service if (_serverQueryService == null) { - var response = new ErrorResponse { Errors = new List { "Server query service not available." } }; + var response = new ErrorResponse + { + Errors = new List + { + "Server query service not available." + } + }; return StatusCode(StatusCodes.Status503ServiceUnavailable, response); } try { + var stopWatch = Stopwatch.StartNew(); + var result = _serverQueryService.CheckServerStatus(managerCode, managerVersion, ipString, port); - var response = new ServerStatusResponse { Available = result.ToString() }; + var response = new ServerStatusResponse + { + Available = result.ToString() + }; + + stopWatch.Stop(); + _logger.LogInformation("Server status request made {managerCode}; {managerVersion}; {ipString}; {port}; {timeTaken}", managerCode, managerVersion, ipString, port, stopWatch.Elapsed); return Ok(response); } catch (ServerManagerApiException ex) { - var response = new ErrorResponse { Errors = ex.Messages }; + var response = new ErrorResponse + { + Errors = ex.Messages + }; return StatusCode(ex.StatusCode, response); } catch (Exception ex) { - var response = new ErrorResponse { Errors = new List { ex.Message } }; + var response = new ErrorResponse + { + Errors = new List + { + ex.Message + } + }; return StatusCode(StatusCodes.Status500InternalServerError, response); } } diff --git a/src/ServerManager.WebApplication/ServerManager.WebApplication.csproj b/src/ServerManager.WebApplication/ServerManager.WebApplication.csproj index 5944af58..e6e58b0e 100644 --- a/src/ServerManager.WebApplication/ServerManager.WebApplication.csproj +++ b/src/ServerManager.WebApplication/ServerManager.WebApplication.csproj @@ -16,6 +16,7 @@ + diff --git a/src/ServerManager.WebApplication/Startup.cs b/src/ServerManager.WebApplication/Startup.cs index 8d153d1c..cba8a988 100644 --- a/src/ServerManager.WebApplication/Startup.cs +++ b/src/ServerManager.WebApplication/Startup.cs @@ -57,6 +57,7 @@ public class Startup }); services.AddHealthChecks(); + services.AddApplicationInsightsTelemetry(Configuration); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. @@ -67,7 +68,6 @@ public class Startup app.UseDeveloperExceptionPage(); } - var enableSwagger = Configuration.GetValue("EnableSwagger"); if (enableSwagger) { diff --git a/src/ServerManager.WebApplication/appsettings.json b/src/ServerManager.WebApplication/appsettings.json index d9d9a9bf..02420ea3 100644 --- a/src/ServerManager.WebApplication/appsettings.json +++ b/src/ServerManager.WebApplication/appsettings.json @@ -4,6 +4,11 @@ "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" + }, + "ApplicationInsights": { + "LogLevel": { + "Default": "Information" + } } }, "AllowedHosts": "*"