Files
comic-img-compress/Logger.cs
T
marcogiuntoni 5152a87ffa V3.x
Moved functionalities to library iMGcompress-core
2025-01-23 12:53:22 +01:00

94 lines
2.6 KiB
C#

using System;
using System.Drawing;
using System.IO;
using System.Runtime.CompilerServices;
using Pastel;
namespace ComicCompressor
{
public class Logger_OFF
{
public LogLevel LoggingLevel { get; set; } = LogLevel.Warning;
public bool Debug = false;
// Set to null for stdout
public string LogFile { get; set; } = null;
public void Log(object message, LogLevel logLevel, Color? col = null)
{
Log(message.ToString(), logLevel, col:col);
}
public void Log(string message, LogLevel logLevel,bool newLine = true, Color? col = null)
{
if (logLevel > LoggingLevel) return;
if (LogFile == null)
{
if(newLine)
Console.WriteLine(message.Pastel(col ?? Color.FromArgb(0,204,204,204)));
else
Console.Write(message.Pastel(col ?? Color.FromArgb(0, 204, 204, 204)));
return;
}
WriteToFile(message);
}
public void LogError(string message, Color? col = null)
{
Log(message, LogLevel.Error, col:col);
}
public void LogError(object message, Color? col = null)
{
Log(message, LogLevel.Error, col:col);
}
public void LogDebug(string message, LogLevel logLevel, Color? col = null)
{
if (!Debug) return;
Log(message, logLevel,col:col);
}
public void LogDebug(object message, LogLevel logLevel, Color? col = null)
{
LogDebug(message.ToString(), logLevel, col:col);
}
[MethodImpl(MethodImplOptions.Synchronized)]
private void WriteToFile(string message)
{
if (LogFile == null) return;
if (!Path.IsPathRooted(LogFile) && !LogFile.StartsWith("."))
{
LogFile = Path.Join(".", LogFile);
}
try
{
Directory.CreateDirectory(Path.GetDirectoryName(LogFile));
File.AppendAllText(Path.GetFullPath(LogFile), message + "\n");
}
catch (UnauthorizedAccessException)
{
Console.WriteLine("Error: User does not have permissions for log file: " + LogFile);
return;
}
catch (Exception)
{
Console.WriteLine("Error: could not write to log file: " + LogFile);
return;
}
}
}
public enum LogLevel
{
Error = 2, Warning = 3, Info = 4, Verbose = 5
}
}