1
0
Fork 0
muzika-gromche/MuzikaGromche/DedupManualLogSource.cs

71 lines
1.2 KiB
C#

using BepInEx.Logging;
namespace MuzikaGromche;
#if DEBUG
// A logger with an API similar to ManualLogSource.
// This logger caches last posted messagee and uses it to deduplicate subsequent messages.
// Use Clear() to forget deduplicated message.
internal class DedupManualLogSource
{
public ManualLogSource Source;
object? lastData = null;
public DedupManualLogSource(ManualLogSource source)
{
Source = source;
}
public void Log(LogLevel level, object data)
{
if (lastData != data)
{
lastData = data;
Source.Log(level, data);
}
}
public void LogFatal(object data)
{
Log(LogLevel.Fatal, data);
}
public void LogError(object data)
{
Log(LogLevel.Error, data);
}
public void LogWarning(object data)
{
Log(LogLevel.Warning, data);
}
public void LogMessage(object data)
{
Log(LogLevel.Message, data);
}
public void LogInfo(object data)
{
Log(LogLevel.Info, data);
}
public void LogDebug(object data)
{
Log(LogLevel.Debug, data);
}
public void Clear()
{
lastData = null;
}
public void Dispose()
{
}
}
#endif