Updated
This commit is contained in:
@@ -6,9 +6,10 @@
|
|||||||
netstandard2.1;
|
netstandard2.1;
|
||||||
net5.0;
|
net5.0;
|
||||||
net6.0;
|
net6.0;
|
||||||
|
net7.0;
|
||||||
</TargetFrameworks>
|
</TargetFrameworks>
|
||||||
<ApplicationIcon>icon.ico</ApplicationIcon>
|
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||||
<Version>1.0.4</Version>
|
<Version>1.0.5</Version>
|
||||||
<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>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace EonaCat.Logger.Internal
|
|||||||
_loggerSettings = new LoggerSettings();
|
_loggerSettings = new LoggerSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
var message = LogHelper.FormatMessageWithHeader(_loggerSettings, logLevel.FromLogLevel(), formatter(state, exception)) + Environment.NewLine;
|
var message = LogHelper.FormatMessageWithHeader(_loggerSettings, logLevel.FromLogLevel(), formatter(state, exception), DateTime.Now) + Environment.NewLine;
|
||||||
if (exception != null)
|
if (exception != null)
|
||||||
{
|
{
|
||||||
message = exception.FormatExceptionToMessage() + Environment.NewLine;
|
message = exception.FormatExceptionToMessage() + Environment.NewLine;
|
||||||
|
|||||||
135
EonaCat.Logger/Helpers/ColorHelper.cs
Normal file
135
EonaCat.Logger/Helpers/ColorHelper.cs
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace EonaCat.Logger.Helpers
|
||||||
|
{
|
||||||
|
public static class ColorHelper
|
||||||
|
{
|
||||||
|
public static string ColorToHexString(Color c)
|
||||||
|
{
|
||||||
|
return "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ColorToRGBString(Color c)
|
||||||
|
{
|
||||||
|
return "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Color ConsoleColorToColor(this ConsoleColor consoleColor)
|
||||||
|
{
|
||||||
|
switch (consoleColor)
|
||||||
|
{
|
||||||
|
case ConsoleColor.Black:
|
||||||
|
return Color.Black;
|
||||||
|
|
||||||
|
case ConsoleColor.DarkBlue:
|
||||||
|
return HexStringToColor("#000080");
|
||||||
|
|
||||||
|
case ConsoleColor.DarkGreen:
|
||||||
|
return HexStringToColor("#008000");
|
||||||
|
|
||||||
|
case ConsoleColor.DarkCyan:
|
||||||
|
return HexStringToColor("#008080");
|
||||||
|
|
||||||
|
case ConsoleColor.DarkRed:
|
||||||
|
return HexStringToColor("#800000");
|
||||||
|
|
||||||
|
case ConsoleColor.DarkMagenta:
|
||||||
|
return HexStringToColor("#800080");
|
||||||
|
|
||||||
|
case ConsoleColor.DarkYellow:
|
||||||
|
return HexStringToColor("#808000");
|
||||||
|
|
||||||
|
case ConsoleColor.Gray:
|
||||||
|
return HexStringToColor("#C0C0C0");
|
||||||
|
|
||||||
|
case ConsoleColor.DarkGray:
|
||||||
|
return HexStringToColor("#808080");
|
||||||
|
|
||||||
|
case ConsoleColor.Blue:
|
||||||
|
return Color.Blue;
|
||||||
|
|
||||||
|
case ConsoleColor.Green:
|
||||||
|
return Color.Lime;
|
||||||
|
|
||||||
|
case ConsoleColor.Cyan:
|
||||||
|
return Color.Cyan;
|
||||||
|
|
||||||
|
case ConsoleColor.Red:
|
||||||
|
return Color.Red;
|
||||||
|
|
||||||
|
case ConsoleColor.Magenta:
|
||||||
|
return Color.Magenta;
|
||||||
|
|
||||||
|
case ConsoleColor.Yellow:
|
||||||
|
return Color.Yellow;
|
||||||
|
|
||||||
|
case ConsoleColor.White:
|
||||||
|
return Color.White;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new NotSupportedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Color HexStringToColor(string htmlColor, bool requireHexSpecified = false, int defaultAlpha = 0xFF) => Color.FromArgb(HexColorToArgb(htmlColor, requireHexSpecified, defaultAlpha));
|
||||||
|
|
||||||
|
public static int HexColorToArgb(string htmlColor, bool requireHexSpecified = false, int defaultAlpha = 0xFF)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(htmlColor))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(htmlColor));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!htmlColor.StartsWith("#") && requireHexSpecified)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"Provided parameter '{htmlColor}' is not valid");
|
||||||
|
}
|
||||||
|
|
||||||
|
htmlColor = htmlColor.TrimStart('#');
|
||||||
|
|
||||||
|
|
||||||
|
var symbolCount = htmlColor.Length;
|
||||||
|
var value = int.Parse(htmlColor, NumberStyles.HexNumber);
|
||||||
|
switch (symbolCount)
|
||||||
|
{
|
||||||
|
case 3: // RGB short hand
|
||||||
|
{
|
||||||
|
return defaultAlpha << 24
|
||||||
|
| value & 0xF
|
||||||
|
| (value & 0xF) << 4
|
||||||
|
| (value & 0xF0) << 4
|
||||||
|
| (value & 0xF0) << 8
|
||||||
|
| (value & 0xF00) << 8
|
||||||
|
| (value & 0xF00) << 12
|
||||||
|
;
|
||||||
|
}
|
||||||
|
case 4: // RGBA short hand
|
||||||
|
{
|
||||||
|
// Inline alpha swap
|
||||||
|
return (value & 0xF) << 24
|
||||||
|
| (value & 0xF) << 28
|
||||||
|
| (value & 0xF0) >> 4
|
||||||
|
| value & 0xF0
|
||||||
|
| value & 0xF00
|
||||||
|
| (value & 0xF00) << 4
|
||||||
|
| (value & 0xF000) << 4
|
||||||
|
| (value & 0xF000) << 8
|
||||||
|
;
|
||||||
|
}
|
||||||
|
case 6: // RGB complete definition
|
||||||
|
{
|
||||||
|
return defaultAlpha << 24 | value;
|
||||||
|
}
|
||||||
|
case 8: // RGBA complete definition
|
||||||
|
{
|
||||||
|
// Alpha swap
|
||||||
|
return (value & 0xFF) << 24 | value >> 8;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
throw new FormatException("Invalid HTML Color");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,42 +7,40 @@ namespace EonaCat.Logger.Managers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class ColorSchema
|
public class ColorSchema
|
||||||
{
|
{
|
||||||
private ConsoleColor currentForeground = Console.ForegroundColor;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The color to use for debug messages. Default is dark gray on black.
|
/// The color to use for debug messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ColorScheme Debug = new ColorScheme(ConsoleColor.DarkGray, ConsoleColor.Black);
|
public ColorScheme Debug = new ColorScheme(ConsoleColor.Green, ConsoleColor.Black);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The color to use for informational messages. Default is gray on black.
|
/// The color to use for informational messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ColorScheme Info = new ColorScheme(ConsoleColor.Gray, ConsoleColor.Black);
|
public ColorScheme Info = new ColorScheme(ConsoleColor.Blue, ConsoleColor.Black);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The color to use for warning messages. Default is dark red on black.
|
/// The color to use for warning messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ColorScheme Warning = new ColorScheme(ConsoleColor.DarkRed, ConsoleColor.Black);
|
public ColorScheme Warning = new ColorScheme(ConsoleColor.DarkYellow, ConsoleColor.Black);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The color to use for error messages. Default is red on black.
|
/// The color to use for error messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ColorScheme Error = new ColorScheme(ConsoleColor.Red, ConsoleColor.Black);
|
public ColorScheme Error = new ColorScheme(ConsoleColor.Red, ConsoleColor.Black);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The color to use for alert messages. Default is dark yellow on black.
|
/// The color to use for alert messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ColorScheme Traffic = new ColorScheme(ConsoleColor.DarkYellow, ConsoleColor.Black);
|
public ColorScheme Traffic = new ColorScheme(ConsoleColor.DarkMagenta, ConsoleColor.Black);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The color to use for critical messages. Default is yellow on black.
|
/// The color to use for critical messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ColorScheme Critical = new ColorScheme(ConsoleColor.Yellow, ConsoleColor.Black);
|
public ColorScheme Critical = new ColorScheme(ConsoleColor.DarkRed, ConsoleColor.Black);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The color to use for emergency messages. Default is white on red.
|
/// The color to use for emergency messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ColorScheme Trace = new ColorScheme(ConsoleColor.White, ConsoleColor.Red);
|
public ColorScheme Trace = new ColorScheme(ConsoleColor.Cyan, ConsoleColor.Black);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -25,8 +25,9 @@ namespace EonaCat.logger.Managers
|
|||||||
/// <param name="settings">Logger settings</param>
|
/// <param name="settings">Logger settings</param>
|
||||||
/// <param name="logType">logtype for the formatted message</param>
|
/// <param name="logType">logtype for the formatted message</param>
|
||||||
/// <param name="currentMessage">The actual message to format with the header</param>
|
/// <param name="currentMessage">The actual message to format with the header</param>
|
||||||
|
/// <param name="dateTime">The dateTime of the message</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string FormatMessageWithHeader(LoggerSettings settings, ELogType logType, string currentMessage)
|
public static string FormatMessageWithHeader(LoggerSettings settings, ELogType logType, string currentMessage, DateTime dateTime)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(currentMessage))
|
if (string.IsNullOrWhiteSpace(currentMessage))
|
||||||
{
|
{
|
||||||
@@ -41,7 +42,7 @@ namespace EonaCat.logger.Managers
|
|||||||
string header = settings.HeaderFormat;
|
string header = settings.HeaderFormat;
|
||||||
if (header.Contains("{ts}"))
|
if (header.Contains("{ts}"))
|
||||||
{
|
{
|
||||||
header = header.Replace("{ts}", DateTime.Now.ToUniversalTime().ToString(settings.TimestampFormat));
|
header = header.Replace("{ts}", dateTime.ToString(settings.TimestampFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (header.Contains("{host}"))
|
if (header.Contains("{host}"))
|
||||||
@@ -209,7 +210,6 @@ namespace EonaCat.logger.Managers
|
|||||||
if (settings == null) return;
|
if (settings == null) return;
|
||||||
if (!settings.EnableFileLogging) return;
|
if (!settings.EnableFileLogging) return;
|
||||||
if (string.IsNullOrWhiteSpace(message)) return;
|
if (string.IsNullOrWhiteSpace(message)) return;
|
||||||
//logger.LogInformation(message);
|
|
||||||
|
|
||||||
int tries = 0;
|
int tries = 0;
|
||||||
bool completed = false;
|
bool completed = false;
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ namespace EonaCat.Logger.Managers
|
|||||||
currentMessage = message;
|
currentMessage = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
var fullMessage = LogHelper.FormatMessageWithHeader(_settings, logType, currentMessage);
|
var fullMessage = LogHelper.FormatMessageWithHeader(_settings, logType, currentMessage, dateTime);
|
||||||
|
|
||||||
LogHelper.SendConsole(_settings, logType, fullMessage);
|
LogHelper.SendConsole(_settings, logType, fullMessage);
|
||||||
|
|
||||||
@@ -300,7 +300,12 @@ namespace EonaCat.Logger.Managers
|
|||||||
logLevel = DllInfo.LogLevel;
|
logLevel = DllInfo.LogLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (logType == ELogType.CRITICAL || logLevel.GetValueOrDefault() <= logType)
|
if (logType == ELogType.NONE)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (logType == ELogType.CRITICAL || logType <= logLevel.GetValueOrDefault())
|
||||||
{
|
{
|
||||||
DateTime now = DateTime.Now;
|
DateTime now = DateTime.Now;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user