Seal + Docs
This commit is contained in:
parent
332b6172ae
commit
7c1ff06fa5
3 changed files with 47 additions and 22 deletions
|
|
@ -2,11 +2,32 @@
|
||||||
|
|
||||||
public class LogEntry
|
public class LogEntry
|
||||||
{
|
{
|
||||||
|
internal LogEntry() { }
|
||||||
|
|
||||||
internal string RawMessage { get; set; }
|
internal string RawMessage { get; set; }
|
||||||
|
|
||||||
public DateTime TimeOfEvent { get; set; }
|
/// <summary>
|
||||||
public CustomLogLevel LogLevel { get; set; }
|
/// The time of the event.
|
||||||
public string Message { get; set; }
|
/// </summary>
|
||||||
public object[] Args { get; set; }
|
public DateTime TimeOfEvent { get; internal set; }
|
||||||
public Exception? Exception { get; set; }
|
|
||||||
|
/// <summary>
|
||||||
|
/// The severity of the event.
|
||||||
|
/// </summary>
|
||||||
|
public CustomLogLevel LogLevel { get; internal set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The message describing the event.
|
||||||
|
/// </summary>
|
||||||
|
public string Message { get; internal set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Any objects involved in creating the event message.
|
||||||
|
/// </summary>
|
||||||
|
public object[] Args { get; internal set; } = Array.Empty<object>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The exception that's been caused.
|
||||||
|
/// </summary>
|
||||||
|
public Exception? Exception { get; internal set; }
|
||||||
}
|
}
|
||||||
|
|
@ -3,16 +3,17 @@ using Xorog.Logger.EventArgs;
|
||||||
|
|
||||||
namespace Xorog.Logger;
|
namespace Xorog.Logger;
|
||||||
|
|
||||||
#pragma warning disable IDE1006 // Naming Styles
|
public sealed class LoggerClient : ILogger
|
||||||
|
|
||||||
public class LoggerClient : ILogger
|
|
||||||
{
|
{
|
||||||
internal LoggerClient() { }
|
internal LoggerClient() { }
|
||||||
|
|
||||||
public LoggerProvider _provider { get; internal set; }
|
/// <summary>
|
||||||
|
/// The <see cref="ILoggerProvider"/>.
|
||||||
|
/// </summary>
|
||||||
|
public LoggerProvider Provider { get; internal set; }
|
||||||
|
|
||||||
private bool loggerStarted = false;
|
private bool LoggerStarted = false;
|
||||||
private CustomLogLevel maxLogLevel = CustomLogLevel.Debug;
|
private CustomLogLevel MaxLogLevel = CustomLogLevel.Debug;
|
||||||
|
|
||||||
private string FileName = "";
|
private string FileName = "";
|
||||||
private FileStream OpenedFile { get; set; }
|
private FileStream OpenedFile { get; set; }
|
||||||
|
|
@ -23,6 +24,9 @@ public class LoggerClient : ILogger
|
||||||
|
|
||||||
private Task RunningLogger = null;
|
private Task RunningLogger = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fired when a log message has been sent.
|
||||||
|
/// </summary>
|
||||||
public event EventHandler<LogMessageEventArgs> LogRaised;
|
public event EventHandler<LogMessageEventArgs> LogRaised;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -43,9 +47,9 @@ public class LoggerClient : ILogger
|
||||||
filePath = filePath.Replace("\\", "/");
|
filePath = filePath.Replace("\\", "/");
|
||||||
|
|
||||||
var handler = new LoggerClient();
|
var handler = new LoggerClient();
|
||||||
handler._provider = new(handler);
|
handler.Provider = new(handler);
|
||||||
|
|
||||||
if (handler.loggerStarted)
|
if (handler.LoggerStarted)
|
||||||
throw new Exception($"The logger is already started");
|
throw new Exception($"The logger is already started");
|
||||||
|
|
||||||
if (filePath is not "")
|
if (filePath is not "")
|
||||||
|
|
@ -62,8 +66,8 @@ public class LoggerClient : ILogger
|
||||||
handler.OpenedFile = File.Open(handler.FileName, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read);
|
handler.OpenedFile = File.Open(handler.FileName, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read);
|
||||||
}
|
}
|
||||||
|
|
||||||
handler.loggerStarted = true;
|
handler.LoggerStarted = true;
|
||||||
handler.maxLogLevel = level;
|
handler.MaxLogLevel = level;
|
||||||
|
|
||||||
if (cleanUpBefore != new DateTime())
|
if (cleanUpBefore != new DateTime())
|
||||||
{
|
{
|
||||||
|
|
@ -90,7 +94,7 @@ public class LoggerClient : ILogger
|
||||||
|
|
||||||
handler.RunningLogger = Task.Run(async () =>
|
handler.RunningLogger = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
while (handler.loggerStarted)
|
while (handler.LoggerStarted)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -209,7 +213,7 @@ public class LoggerClient : ILogger
|
||||||
attemptedParsing = false;
|
attemptedParsing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handler.maxLogLevel >= currentLog.LogLevel)
|
if (handler.MaxLogLevel >= currentLog.LogLevel)
|
||||||
{
|
{
|
||||||
Console.ResetColor(); Console.Write($"[{currentLog.TimeOfEvent:dd.MM.yyyy HH:mm:ss:fff}] ");
|
Console.ResetColor(); Console.Write($"[{currentLog.TimeOfEvent:dd.MM.yyyy HH:mm:ss:fff}] ");
|
||||||
Console.ForegroundColor = LogLevelColor; Console.BackgroundColor = BackgroundColor; Console.Write($"[{LogLevelText}]"); Console.ResetColor(); Console.Write(" ");
|
Console.ForegroundColor = LogLevelColor; Console.BackgroundColor = BackgroundColor; Console.Write($"[{LogLevelText}]"); Console.ResetColor(); Console.Write(" ");
|
||||||
|
|
@ -283,8 +287,8 @@ public class LoggerClient : ILogger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void StopLogger()
|
public void StopLogger()
|
||||||
{
|
{
|
||||||
loggerStarted = false;
|
LoggerStarted = false;
|
||||||
maxLogLevel = CustomLogLevel.Debug;
|
MaxLogLevel = CustomLogLevel.Debug;
|
||||||
FileName = "";
|
FileName = "";
|
||||||
|
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
|
|
@ -324,7 +328,7 @@ public class LoggerClient : ILogger
|
||||||
/// Changes the log level
|
/// Changes the log level
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="level">The new log level to apply</param>
|
/// <param name="level">The new log level to apply</param>
|
||||||
public void ChangeLogLevel(CustomLogLevel level) => maxLogLevel = level;
|
public void ChangeLogLevel(CustomLogLevel level) => MaxLogLevel = level;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Log with none log level
|
/// Log with none log level
|
||||||
|
|
@ -682,7 +686,7 @@ public class LoggerClient : ILogger
|
||||||
});
|
});
|
||||||
|
|
||||||
public bool IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel)
|
public bool IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel)
|
||||||
=> loggerStarted;
|
=> LoggerStarted;
|
||||||
|
|
||||||
public IDisposable BeginScope<TState>(TState state)
|
public IDisposable BeginScope<TState>(TState state)
|
||||||
=> default!;
|
=> default!;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
namespace Xorog.Logger;
|
namespace Xorog.Logger;
|
||||||
|
|
||||||
public class LoggerProvider : ILoggerProvider
|
public sealed class LoggerProvider : ILoggerProvider
|
||||||
{
|
{
|
||||||
internal LoggerProvider(LoggerClient logger)
|
internal LoggerProvider(LoggerClient logger)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Reference in a new issue