Added a event thats gets fired when the logLevel is disabled

This commit is contained in:
Jeroen Saey
2024-09-26 07:03:16 +02:00
parent 585652fdba
commit 98afcd3790
5 changed files with 80 additions and 15 deletions

View File

@@ -3,7 +3,7 @@
<TargetFrameworks>.netstandard2.1; net6.0; net7.0; net8.0; net4.8;</TargetFrameworks> <TargetFrameworks>.netstandard2.1; net6.0; net7.0; net8.0; net4.8;</TargetFrameworks>
<ApplicationIcon>icon.ico</ApplicationIcon> <ApplicationIcon>icon.ico</ApplicationIcon>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<FileVersion>1.3.2</FileVersion> <FileVersion>1.3.3</FileVersion>
<Authors>EonaCat (Jeroen Saey)</Authors> <Authors>EonaCat (Jeroen Saey)</Authors>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Company>EonaCat (Jeroen Saey)</Company> <Company>EonaCat (Jeroen Saey)</Company>
@@ -24,7 +24,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<EVRevisionFormat>1.3.2+{chash:10}.{c:ymd}</EVRevisionFormat> <EVRevisionFormat>1.3.3+{chash:10}.{c:ymd}</EVRevisionFormat>
<EVDefault>true</EVDefault> <EVDefault>true</EVDefault>
<EVInfo>true</EVInfo> <EVInfo>true</EVInfo>
<EVTagMatch>v[0-9]*</EVTagMatch> <EVTagMatch>v[0-9]*</EVTagMatch>

View File

@@ -63,10 +63,17 @@ public static class ExceptionExtensions
foreach (DictionaryEntry entry in data) foreach (DictionaryEntry entry in data)
{ {
sb.Append(" | ") if (entry.Key != null)
.Append(entry.Key) {
.Append(": ") sb.Append(" | ")
.Append(entry.Key);
}
if (entry.Value != null)
{
sb.Append(": ")
.AppendLine(entry.Value.ToString()); .AppendLine(entry.Value.ToString());
}
} }
return sb.ToString(); return sb.ToString();

View File

@@ -25,6 +25,8 @@ internal static class LogHelper
{ {
internal static event EventHandler<ErrorMessage> OnException; internal static event EventHandler<ErrorMessage> OnException;
internal static event EventHandler<ErrorMessage> OnLogLevelDisabled;
internal static string FormatMessageWithHeader(LoggerSettings settings, ELogType logType, string currentMessage, internal static string FormatMessageWithHeader(LoggerSettings settings, ELogType logType, string currentMessage,
DateTime dateTime, string category = null) DateTime dateTime, string category = null)
{ {
@@ -133,9 +135,25 @@ internal static class LogHelper
} }
} }
private static bool IsLogLevelEnabled(LoggerSettings settings, ELogType logType) private bool IsLogLevelEnabled(LoggerSettings loggerSettings, ELogType logType)
{ {
return settings.MaxLogType != ELogType.NONE && logType <= settings.MaxLogType; if (loggerSettings == null)
{
OnLogLevelDisabled?.Invoke(this, new ErrorMessage { Message = "Settings is null." });
return false;
}
var isEnabled = loggerSettings.MaxLogType != ELogType.NONE && logType <= loggerSettings.MaxLogType;
if (!isEnabled)
{
OnLogLevelDisabled?.Invoke(this, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled, cannot log message" });
}
return isEnabled;
}
public static void SetLogLevel(LoggerSettings settings, ELogType logType)
{
settings.MaxLogType = logType;
} }
private static void Log(ILogger logger, LogLevel logLevel, string message) private static void Log(ILogger logger, LogLevel logLevel, string message)

View File

@@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -57,6 +56,12 @@ namespace EonaCat.Logger.Managers
SetupFileLogger(settings); SetupFileLogger(settings);
SetupLogManager(); SetupLogManager();
LogHelper.OnException += LogHelper_OnException; LogHelper.OnException += LogHelper_OnException;
LogHelper.OnLogLevelDisabled += LogHelper_OnLogLevelDisabled;
}
private void LogHelper_OnLogLevelDisabled(object sender, ErrorMessage e)
{
OnLogLevelDisabled?.Invoke(sender, e);
} }
private DateTime CurrentDateTime => Settings.UseLocalTime ? DateTime.Now : DateTime.UtcNow; private DateTime CurrentDateTime => Settings.UseLocalTime ? DateTime.Now : DateTime.UtcNow;
@@ -111,8 +116,16 @@ namespace EonaCat.Logger.Managers
customSplunkSourceType, sendToGrayLogServers, grayLogFacility, grayLogSource, grayLogVersion); customSplunkSourceType, sendToGrayLogServers, grayLogFacility, grayLogSource, grayLogVersion);
} }
/// <summary>
/// Gets fired when an exception occurs during logging
/// </summary>
public event EventHandler<ErrorMessage> OnException; public event EventHandler<ErrorMessage> OnException;
/// <summary>
/// Gets fired when the log level is disabled and the user tries to log a message
/// </summary>
public event EventHandler<ErrorMessage> OnLogLevelDisabled;
private static LoggerSettings CreateDefaultSettings() private static LoggerSettings CreateDefaultSettings()
{ {
var settings = new LoggerSettings var settings = new LoggerSettings
@@ -194,7 +207,7 @@ namespace EonaCat.Logger.Managers
string grayLogSource = null, string grayLogVersion = "1.1") string grayLogSource = null, string grayLogVersion = "1.1")
{ {
if (string.IsNullOrEmpty(message) || logType == ELogType.NONE || if (string.IsNullOrEmpty(message) || logType == ELogType.NONE ||
(int)logType > (int)Settings.MaxLogType) !IsLogLevelEnabled(logType))
{ {
return; return;
} }
@@ -256,6 +269,22 @@ namespace EonaCat.Logger.Managers
Settings.OnLogEvent(logMessage); Settings.OnLogEvent(logMessage);
} }
private bool IsLogLevelEnabled(ELogType logType)
{
if (Settings == null)
{
OnLogLevelDisabled?.Invoke(this, new ErrorMessage { Message = "Settings is null." });
return false;
}
var isEnabled = Settings.MaxLogType != ELogType.NONE && logType <= Settings.MaxLogType;
if (!isEnabled)
{
OnLogLevelDisabled?.Invoke(this, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled, cannot log message" });
}
return isEnabled;
}
public void Reset() public void Reset()
{ {
Settings.ResetLogEvent(); Settings.ResetLogEvent();

View File

@@ -95,6 +95,7 @@ namespace EonaCat.Logger.Advanced
// Create and configure a LogManager for logging. // Create and configure a LogManager for logging.
_logManager = new LogManager(new LoggerSettings { RemoveMessagePrefix = true }); _logManager = new LogManager(new LoggerSettings { RemoveMessagePrefix = true });
_logManager.OnException += _logManager_OnException; _logManager.OnException += _logManager_OnException;
_logManager.OnLogLevelDisabled += _logManager_OnLogLevelDisabled;
_logManager.Settings.FileLoggerOptions.FileNamePrefix = "advanced"; _logManager.Settings.FileLoggerOptions.FileNamePrefix = "advanced";
_logManager.Settings.UseLocalTime = true; _logManager.Settings.UseLocalTime = true;
_logManager.Settings.FileLoggerOptions.UseLocalTime = true; _logManager.Settings.FileLoggerOptions.UseLocalTime = true;
@@ -106,6 +107,16 @@ namespace EonaCat.Logger.Advanced
// Event handler for LogManager exceptions, writes messages to the console. // Event handler for LogManager exceptions, writes messages to the console.
private static void _logManager_OnException(object? sender, ErrorMessage e) private static void _logManager_OnException(object? sender, ErrorMessage e)
{
Console.WriteLine(e.Message);
if (e.Exception != null)
{
Console.WriteLine(e.Exception);
}
}
// Event handler for LogManager loglevel disabled notifications, writes messages to the console.
private static void _logManager_OnLogLevelDisabled(object? sender, ErrorMessage e)
{ {
Console.WriteLine(e.Message); Console.WriteLine(e.Message);
if (e.Exception != null) if (e.Exception != null)