structured logging

This commit is contained in:
Shaun Walker
2019-10-22 11:57:28 -04:00
parent ce25967633
commit 2e3a4efb74
79 changed files with 891 additions and 497 deletions

View File

@ -1,16 +1,24 @@
using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using Oqtane.Shared;
using Oqtane.Models;
using System.Threading.Tasks;
using System.Linq;
using Oqtane.Services;
using System;
namespace Oqtane.Modules
{
public class ModuleBase : ComponentBase, IModuleControl
{
public Logger logger { get; set; }
public ModuleBase()
{
this.logger = new Logger(this);
}
[Inject]
protected IJSRuntime JSRuntime { get; set; }
protected ILogService LoggingService { get; set; }
[CascadingParameter]
protected PageState PageState { get; set; }
@ -29,6 +37,7 @@ namespace Oqtane.Modules
}
}
// optional interface properties
public virtual SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.View; } set { } } // default security
public virtual string Title { get { return ""; } }
@ -37,11 +46,14 @@ namespace Oqtane.Modules
public virtual bool UseAdminContainer { get { return true; } }
// path method
public string ModulePath()
{
return "Modules/" + this.GetType().Namespace + "/";
}
// url methods
public string NavigateUrl()
{
return NavigateUrl(PageState.Page.Path);
@ -97,6 +109,7 @@ namespace Oqtane.Modules
return Utilities.EditUrl(PageState.Alias.Path, path, moduleid, action, parameters);
}
// user feedback methods
public void AddModuleMessage(string message, MessageType type)
{
ModuleInstance.AddModuleMessage(message, type);
@ -111,5 +124,88 @@ namespace Oqtane.Modules
{
ModuleInstance.HideProgressIndicator();
}
// logging method
public async Task Log(LogLevel level, Exception exception, string message, params object[] args)
{
int PageId = PageState.Page.PageId;
int ModuleId = ModuleState.ModuleId;
int? UserId = null;
if (PageState.User != null)
{
UserId = PageState.User.UserId;
}
await LoggingService.Log(PageId, ModuleId, UserId, this.GetType().ToString(), level, exception, message, args);
}
public class Logger
{
private ModuleBase modulebase;
public Logger(ModuleBase modulebase)
{
this.modulebase = modulebase;
}
public async Task LogTrace(string message, params object[] args)
{
await modulebase.Log(LogLevel.Trace, null, message, args);
}
public async Task LogTrace(Exception exception, string message, params object[] args)
{
await modulebase.Log(LogLevel.Trace, exception, message, args);
}
public async Task LogDebug(string message, params object[] args)
{
await modulebase.Log(LogLevel.Debug, null, message, args);
}
public async Task LogDebug(Exception exception, string message, params object[] args)
{
await modulebase.Log(LogLevel.Debug, exception, message, args);
}
public async Task LogInformation(string message, params object[] args)
{
await modulebase.Log(LogLevel.Information, null, message, args);
}
public async Task LogInformation(Exception exception, string message, params object[] args)
{
await modulebase.Log(LogLevel.Information, exception, message, args);
}
public async Task LogWarning(string message, params object[] args)
{
await modulebase.Log(LogLevel.Warning, null, message, args);
}
public async Task LogWarning(Exception exception, string message, params object[] args)
{
await modulebase.Log(LogLevel.Warning, exception, message, args);
}
public async Task LogError(string message, params object[] args)
{
await modulebase.Log(LogLevel.Error, null, message, args);
}
public async Task LogError(Exception exception, string message, params object[] args)
{
await modulebase.Log(LogLevel.Error, exception, message, args);
}
public async Task LogCritical(string message, params object[] args)
{
await modulebase.Log(LogLevel.Critical, null, message, args);
}
public async Task LogCritical(Exception exception, string message, params object[] args)
{
await modulebase.Log(LogLevel.Critical, exception, message, args);
}
}
}
}