cs-codex-dist-tests/Logging/BaseLog.cs

55 lines
1.2 KiB
C#

using System.Diagnostics;
using Utils;
namespace Logging
{
public abstract class BaseLog
{
private bool hasFailed;
private LogFile? logFile;
private readonly bool debug;
protected BaseLog(bool debug)
{
this.debug = debug;
}
protected abstract LogFile CreateLogFile();
protected LogFile LogFile
{
get
{
if (logFile == null) logFile = CreateLogFile();
return logFile;
}
}
public void Log(string message)
{
LogFile.Write(message);
}
public void Debug(string message = "", int skipFrames = 0)
{
if (debug)
{
var callerName = DebugStack.GetCallerName(skipFrames);
Log($"(debug)({callerName}) {message}");
}
}
public void Error(string message)
{
Log($"[ERROR] {message}");
}
public void MarkAsFailed()
{
if (hasFailed) return;
hasFailed = true;
LogFile.ConcatToFilename("_FAILED");
}
}
}