293 lines
9.4 KiB
C#
293 lines
9.4 KiB
C#
// Copyright (c) 2021 homuler
|
|
//
|
|
// Use of this source code is governed by an MIT-style
|
|
// license that can be found in the LICENSE file or at
|
|
// https://opensource.org/licenses/MIT.
|
|
|
|
using System;
|
|
using UnityEngine;
|
|
|
|
using ConditionalAttribute = System.Diagnostics.ConditionalAttribute;
|
|
|
|
namespace Mediapipe.Unity
|
|
{
|
|
public interface IExtendedLogger : ILogger
|
|
{
|
|
void Log(Logger.LogLevel logLevel, string tag, object message, UnityEngine.Object context);
|
|
void Log(Logger.LogLevel logLevel, string tag, object message);
|
|
void Log(Logger.LogLevel logLevel, object message, UnityEngine.Object context);
|
|
void Log(Logger.LogLevel logLevel, object message);
|
|
}
|
|
|
|
public static class Logger
|
|
{
|
|
public enum LogLevel : int
|
|
{
|
|
Fatal,
|
|
Error,
|
|
Warn,
|
|
Info,
|
|
Verbose,
|
|
Debug,
|
|
}
|
|
|
|
public static LogLevel MinLogLevel { get; set; } = LogLevel.Info;
|
|
private static IExtendedLogger _InternalLogger;
|
|
public static IExtendedLogger InternalLogger
|
|
{
|
|
get
|
|
{
|
|
if (_InternalLogger == null)
|
|
{
|
|
_InternalLogger = new LoggerWrapper(Debug.unityLogger);
|
|
}
|
|
return _InternalLogger;
|
|
}
|
|
}
|
|
|
|
public static void SetLogger(IExtendedLogger newLogger)
|
|
{
|
|
_InternalLogger = newLogger;
|
|
}
|
|
|
|
public static void SetLogger(ILogger newLogger)
|
|
{
|
|
_InternalLogger = new LoggerWrapper(newLogger);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogException(Exception exception, UnityEngine.Object context)
|
|
{
|
|
if (MinLogLevel >= LogLevel.Error)
|
|
{
|
|
InternalLogger.LogException(exception, context);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogException(Exception exception)
|
|
{
|
|
if (MinLogLevel >= LogLevel.Error)
|
|
{
|
|
InternalLogger.LogException(exception);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogError(string tag, object message, UnityEngine.Object context)
|
|
{
|
|
if (MinLogLevel >= LogLevel.Error)
|
|
{
|
|
InternalLogger.LogError(tag, message, context);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogError(string tag, object message)
|
|
{
|
|
if (MinLogLevel >= LogLevel.Error)
|
|
{
|
|
InternalLogger.LogError(tag, message);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogError(object message)
|
|
{
|
|
LogError(null, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogWarning(string tag, object message, UnityEngine.Object context)
|
|
{
|
|
if (MinLogLevel >= LogLevel.Info)
|
|
{
|
|
InternalLogger.LogWarning(tag, message, context);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogWarning(string tag, object message)
|
|
{
|
|
if (MinLogLevel >= LogLevel.Info)
|
|
{
|
|
InternalLogger.LogWarning(tag, message);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogWarning(object message)
|
|
{
|
|
LogWarning(null, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void Log(LogLevel logLevel, string tag, object message, UnityEngine.Object context)
|
|
{
|
|
if (MinLogLevel >= logLevel)
|
|
{
|
|
InternalLogger.Log(logLevel, tag, message, context);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void Log(LogLevel logLevel, string tag, object message)
|
|
{
|
|
if (MinLogLevel >= logLevel)
|
|
{
|
|
InternalLogger.Log(logLevel, tag, message);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void Log(LogLevel logLevel, object message, UnityEngine.Object context)
|
|
{
|
|
if (MinLogLevel >= logLevel)
|
|
{
|
|
InternalLogger.Log(logLevel, message, context);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void Log(LogLevel logLevel, object message)
|
|
{
|
|
if (MinLogLevel >= logLevel)
|
|
{
|
|
InternalLogger.Log(logLevel, message);
|
|
}
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void Log(string tag, object message)
|
|
{
|
|
Log(LogLevel.Info, tag, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void Log(object message)
|
|
{
|
|
Log(LogLevel.Info, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogInfo(string tag, object message, UnityEngine.Object context)
|
|
{
|
|
Log(LogLevel.Info, tag, message, context);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogInfo(string tag, object message)
|
|
{
|
|
Log(LogLevel.Info, tag, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogInfo(object message)
|
|
{
|
|
Log(LogLevel.Info, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogVerbose(string tag, object message, UnityEngine.Object context)
|
|
{
|
|
Log(LogLevel.Verbose, tag, message, context);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogVerbose(string tag, object message)
|
|
{
|
|
Log(LogLevel.Verbose, tag, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogVerbose(object message)
|
|
{
|
|
Log(LogLevel.Verbose, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogDebug(string tag, object message, UnityEngine.Object context)
|
|
{
|
|
Log(LogLevel.Debug, tag, message, context);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogDebug(string tag, object message)
|
|
{
|
|
Log(LogLevel.Debug, tag, message);
|
|
}
|
|
|
|
[Conditional("DEBUG"), Conditional("DEVELOPMENT_BUILD")]
|
|
public static void LogDebug(object message)
|
|
{
|
|
Log(LogLevel.Debug, message);
|
|
}
|
|
|
|
private class LoggerWrapper : IExtendedLogger
|
|
{
|
|
private readonly ILogger _logger;
|
|
|
|
public LoggerWrapper(ILogger logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
public LogType filterLogType
|
|
{
|
|
get => _logger.filterLogType;
|
|
set => _logger.filterLogType = value;
|
|
}
|
|
|
|
public bool logEnabled
|
|
{
|
|
get => _logger.logEnabled;
|
|
set => _logger.logEnabled = value;
|
|
}
|
|
|
|
public ILogHandler logHandler
|
|
{
|
|
get => _logger.logHandler;
|
|
set => _logger.logHandler = value;
|
|
}
|
|
|
|
public bool IsLogTypeAllowed(LogType logType) { return _logger.IsLogTypeAllowed(logType); }
|
|
public void Log(LogType logType, object message) { _logger.Log(logType, message); }
|
|
public void Log(LogType logType, object message, UnityEngine.Object context) { _logger.Log(logType, message, context); }
|
|
public void Log(LogType logType, string tag, object message) { _logger.Log(logType, tag, message); }
|
|
public void Log(LogType logType, string tag, object message, UnityEngine.Object context) { _logger.Log(logType, tag, message, context); }
|
|
public void Log(object message) { _logger.Log(message); }
|
|
public void Log(string tag, object message) { _logger.Log(tag, message); }
|
|
public void Log(string tag, object message, UnityEngine.Object context) { _logger.Log(tag, message, context); }
|
|
public void Log(LogLevel logLevel, string tag, object message, UnityEngine.Object context) { _logger.Log(logLevel.GetLogType(), tag, message, context); }
|
|
public void Log(LogLevel logLevel, string tag, object message) { _logger.Log(logLevel.GetLogType(), tag, message); }
|
|
public void Log(LogLevel logLevel, object message, UnityEngine.Object context) { _logger.Log(logLevel.GetLogType(), message, context); }
|
|
public void Log(LogLevel logLevel, object message) { _logger.Log(logLevel.GetLogType(), message); }
|
|
public void LogWarning(string tag, object message) { _logger.LogWarning(tag, message); }
|
|
public void LogWarning(string tag, object message, UnityEngine.Object context) { _logger.LogWarning(tag, message, context); }
|
|
public void LogError(string tag, object message) { _logger.LogError(tag, message); }
|
|
public void LogError(string tag, object message, UnityEngine.Object context) { _logger.LogError(tag, message, context); }
|
|
public void LogException(Exception exception) { _logger.LogException(exception); }
|
|
public void LogException(Exception exception, UnityEngine.Object context) { _logger.LogException(exception, context); }
|
|
public void LogFormat(LogType logType, string format, params object[] args) { _logger.LogFormat(logType, format, args); }
|
|
public void LogFormat(LogType logType, UnityEngine.Object context, string format, params object[] args) { _logger.LogFormat(logType, context, format, args); }
|
|
}
|
|
}
|
|
|
|
public static class LoggerLogLevelExtension
|
|
{
|
|
public static LogType GetLogType(this Logger.LogLevel logLevel)
|
|
{
|
|
switch (logLevel)
|
|
{
|
|
case Logger.LogLevel.Fatal:
|
|
case Logger.LogLevel.Error: return LogType.Error;
|
|
case Logger.LogLevel.Warn: return LogType.Warning;
|
|
case Logger.LogLevel.Info:
|
|
case Logger.LogLevel.Verbose:
|
|
case Logger.LogLevel.Debug:
|
|
default: return LogType.Log;
|
|
}
|
|
}
|
|
}
|
|
}
|