Moved logging stuff over from other project.
Also updated .gitignore.
This commit is contained in:
parent
0e30f598c1
commit
b39d8b6e85
19
.gitignore
vendored
19
.gitignore
vendored
@ -1,4 +1,17 @@
|
||||
# ---> VisualStudioCode
|
||||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/vscode,dotnetcore
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=vscode,dotnetcore
|
||||
|
||||
### DotnetCore ###
|
||||
# .NET Core build folders
|
||||
bin/
|
||||
obj/
|
||||
|
||||
# Common node modules locations
|
||||
/node_modules
|
||||
/wwwroot/node_modules
|
||||
|
||||
### vscode ###
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
@ -6,6 +19,4 @@
|
||||
!.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/vscode,dotnetcore
|
28
ILogRecievable.cs
Normal file
28
ILogRecievable.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using System;
|
||||
|
||||
namespace SimpleLogger
|
||||
{
|
||||
public interface ILogReceiver
|
||||
{
|
||||
string Identifier { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The severity of the messages this log should receive.
|
||||
/// </summary>
|
||||
/// <value>The severity of the logs.</value>
|
||||
LogLevel Level { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Logs the message.
|
||||
/// </summary>
|
||||
/// <param name="message">The message to be logged.</param>
|
||||
/// <param name="time">The time at which this message was requested to be logged.</param>
|
||||
/// <param name="level">The severity of this message.</param>
|
||||
void LogMessage(string message, DateTime time, LogLevel level);
|
||||
|
||||
/// <summary>
|
||||
/// Called when this receiver should explicitly flush received messages.
|
||||
/// </summary>
|
||||
void Flush();
|
||||
}
|
||||
}
|
10
LogLevel.cs
Normal file
10
LogLevel.cs
Normal file
@ -0,0 +1,10 @@
|
||||
namespace SimpleLogger
|
||||
{
|
||||
public enum LogLevel : int
|
||||
{
|
||||
FATAL,
|
||||
INFO,
|
||||
WARNING,
|
||||
DEBUG,
|
||||
}
|
||||
}
|
52
Logger.cs
Normal file
52
Logger.cs
Normal file
@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SimpleLogger
|
||||
{
|
||||
public static class Logger {
|
||||
private static readonly ConcurrentDictionary<string, ILogReceiver> listeners = new ConcurrentDictionary<string, ILogReceiver>();
|
||||
|
||||
/// <summary>
|
||||
/// Logs the message to listeners that are listening to the set severity of the message or greater.
|
||||
/// </summary>
|
||||
/// <param name="message">The message to log.</param>
|
||||
/// <param name="level">The level of severity, by default, info.</param>
|
||||
public static void Log(string message, LogLevel level = LogLevel.INFO) {
|
||||
foreach (ILogReceiver listener in listeners.Values)
|
||||
{
|
||||
if (level <= listener.Level) {
|
||||
listener.LogMessage(message, DateTime.Now, level);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a log listener.
|
||||
/// </summary>
|
||||
/// <param name="listener">The listener to add.</param>
|
||||
public static void AddLogListener(ILogReceiver listener) {
|
||||
listeners[listener.Identifier] = listener;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes a log listener.
|
||||
/// </summary>
|
||||
/// <param name="listener">The listener to remove.</param>
|
||||
public static void RemoveLogListener(ILogReceiver listener) {
|
||||
ILogReceiver receiver;
|
||||
listeners.TryRemove(listener.Identifier, out receiver);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when all listeners should perform any flushing they need.
|
||||
/// </summary>
|
||||
public static void FlushListeners()
|
||||
{
|
||||
foreach (ILogReceiver listener in listeners.Values)
|
||||
{
|
||||
listener.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
SimpleLogger.csproj
Normal file
7
SimpleLogger.csproj
Normal file
@ -0,0 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
Loading…
Reference in New Issue
Block a user