using UnityEngine;
namespace AutoGroupGenerator
{
///
/// Logger that filters editor messages by configured verbosity.
///
public class Logger
{
#region Fields
private readonly DataContainer m_DataContainer;
#endregion
#region Methods
///
/// Initializes a new logger for the provided data container.
///
/// The data container that supplies settings.
public Logger(DataContainer dataContainer)
{
m_DataContainer = dataContainer;
}
///
/// Logs a message at the specified log level.
///
/// The object issuing the log.
/// The log level for the message.
/// The message to log.
public void Log(object invoker, LogLevelID logLevel, string message)
{
if (m_DataContainer.Settings == null)
{
Debug.LogError($"Log failed! Settings = null!");
return;
}
if (logLevel == LogLevelID.OnlyErrors)
{
Debug.LogError($"{invoker.GetType().Name}: {message}");
return;
}
if (logLevel <= m_DataContainer.Settings.LogLevel)
{
Debug.Log($"{invoker.GetType().Name}: {message}");
}
}
///
/// Logs an error message.
///
/// The object issuing the log.
/// The message to log.
public void LogError(object invoker, string message)
{
Log(invoker, LogLevelID.OnlyErrors, message);
}
///
/// Logs an informational message.
///
/// The object issuing the log.
/// The message to log.
public void LogInfo(object invoker, string message)
{
Log(invoker, LogLevelID.Info, message);
}
///
/// Logs a developer-level diagnostic message.
///
/// The object issuing the log.
/// The message to log.
public void LogDev(object invoker, string message)
{
Log(invoker, LogLevelID.Developer, message);
}
#endregion
}
}