mirror of
https://github.com/ChronosX88/log4sharp.git
synced 2024-12-27 06:31:46 +00:00
Implement basic logger
This commit is contained in:
parent
bbcb8248e6
commit
887d55c6d2
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/.idea
|
||||
|
||||
bin
|
||||
obj
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 ChronosX88
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
16
Log4Sharp.sln
Normal file
16
Log4Sharp.sln
Normal file
@ -0,0 +1,16 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Log4Sharp", "src\Log4Sharp\Log4Sharp.csproj", "{130E441D-9860-4598-8EFD-22C6FCDB8D7C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{130E441D-9860-4598-8EFD-22C6FCDB8D7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{130E441D-9860-4598-8EFD-22C6FCDB8D7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{130E441D-9860-4598-8EFD-22C6FCDB8D7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{130E441D-9860-4598-8EFD-22C6FCDB8D7C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
36
src/Log4Sharp/Log.cs
Normal file
36
src/Log4Sharp/Log.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System;
|
||||
|
||||
namespace Log4Sharp
|
||||
{
|
||||
public class Log
|
||||
{
|
||||
private const LogLevel DefaultLogLevel = LogLevel.Error;
|
||||
|
||||
private static readonly Logger DefaultLogger = new Logger("", DefaultLogLevel, false, true);
|
||||
|
||||
public static void Error(string message) {
|
||||
DefaultLogger.Error(message);
|
||||
}
|
||||
|
||||
public static void Warning(string message) {
|
||||
DefaultLogger.Warning(message);
|
||||
}
|
||||
|
||||
public static void Fatal(string message) {
|
||||
DefaultLogger.Fatal(message);
|
||||
}
|
||||
|
||||
public static void Info(string message) {
|
||||
DefaultLogger.Info(message);
|
||||
}
|
||||
|
||||
public static void Debug(string message) {
|
||||
DefaultLogger.Debug(message);
|
||||
}
|
||||
|
||||
public static void SetLogLevel(LogLevel lvl)
|
||||
{
|
||||
DefaultLogger.LogLevel = lvl;
|
||||
}
|
||||
}
|
||||
}
|
11
src/Log4Sharp/Log4Sharp.csproj
Normal file
11
src/Log4Sharp/Log4Sharp.csproj
Normal file
@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Colorful.Console" Version="1.2.10" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
11
src/Log4Sharp/LogLevel.cs
Normal file
11
src/Log4Sharp/LogLevel.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace Log4Sharp
|
||||
{
|
||||
public enum LogLevel
|
||||
{
|
||||
Fatal = 0,
|
||||
Error = 1,
|
||||
Warn = 2,
|
||||
Info = 3,
|
||||
Debug = 4
|
||||
}
|
||||
}
|
129
src/Log4Sharp/Logger.cs
Normal file
129
src/Log4Sharp/Logger.cs
Normal file
@ -0,0 +1,129 @@
|
||||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using Colorful;
|
||||
|
||||
namespace Log4Sharp
|
||||
{
|
||||
public class Logger
|
||||
{
|
||||
public LogLevel LogLevel { get; set; }
|
||||
|
||||
private readonly bool _isDefaultLogger;
|
||||
|
||||
internal Logger(string name, LogLevel logLevel, bool systemLog, bool isDefaultLogger)
|
||||
{
|
||||
this.LogLevel = logLevel;
|
||||
this._isDefaultLogger = isDefaultLogger;
|
||||
}
|
||||
|
||||
public void Error(string message)
|
||||
{
|
||||
if (LogLevel > LogLevel.Fatal)
|
||||
{
|
||||
writeLog(LogType.Error, message);
|
||||
}
|
||||
}
|
||||
|
||||
public void Warning(string message)
|
||||
{
|
||||
if (LogLevel > LogLevel.Error)
|
||||
{
|
||||
writeLog(LogType.Warning, message);
|
||||
}
|
||||
}
|
||||
|
||||
public void Info(string message)
|
||||
{
|
||||
if (LogLevel > LogLevel.Warn)
|
||||
{
|
||||
writeLog(LogType.Info, message);
|
||||
}
|
||||
}
|
||||
|
||||
public void Debug(string message)
|
||||
{
|
||||
if (LogLevel > LogLevel.Info)
|
||||
{
|
||||
writeLog(LogType.Debug, message);
|
||||
}
|
||||
}
|
||||
|
||||
public void Fatal(string message)
|
||||
{
|
||||
writeLog(LogType.Fatal, message);
|
||||
System.Environment.Exit(1);
|
||||
}
|
||||
|
||||
private void writeLog(LogType logType, string message)
|
||||
{
|
||||
var st = new StackTrace();
|
||||
StackFrame stFrame;
|
||||
if (_isDefaultLogger)
|
||||
{
|
||||
stFrame = st.GetFrame(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
stFrame = st.GetFrame(2);
|
||||
}
|
||||
|
||||
var dateTimeFormatter = new Formatter($"{DateTime.Now}", Color.White);
|
||||
var frameFormatter = new Formatter($"{stFrame.GetMethod().ReflectedType.FullName}", Color.DeepPink);
|
||||
|
||||
string outputMessage = "[{0}] [{1}] | [{2}]: " + message;
|
||||
|
||||
Formatter tagFormatter = null;
|
||||
switch (logType)
|
||||
{
|
||||
case LogType.Error:
|
||||
{
|
||||
tagFormatter = new Formatter("ERROR", Color.Red);
|
||||
break;
|
||||
}
|
||||
case LogType.Fatal:
|
||||
{
|
||||
tagFormatter = new Formatter("FATAL", Color.DarkRed);
|
||||
break;
|
||||
}
|
||||
case LogType.Info:
|
||||
{
|
||||
tagFormatter = new Formatter("INFO", Color.Aqua);
|
||||
break;
|
||||
}
|
||||
case LogType.Warning:
|
||||
{
|
||||
tagFormatter = new Formatter("WARNING", Color.Yellow);
|
||||
break;
|
||||
}
|
||||
case LogType.Debug:
|
||||
{
|
||||
tagFormatter = new Formatter("DEBUG", Color.LightGray);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
tagFormatter = new Formatter("UNKNOWN", Color.Green);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var formatters = new Formatter[]
|
||||
{
|
||||
dateTimeFormatter,
|
||||
frameFormatter,
|
||||
tagFormatter
|
||||
};
|
||||
Colorful.Console.WriteLineFormatted(outputMessage, Color.Gray, formatters);
|
||||
}
|
||||
|
||||
private enum LogType
|
||||
{
|
||||
Error,
|
||||
Fatal,
|
||||
Info,
|
||||
Warning,
|
||||
Debug
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user