using System;
using GFramework.Core.logging;
namespace GFramework.Core.Abstractions.logging;
///
/// 定义日志记录接口,提供日志记录和级别检查功能
///
public interface ILogger
{
///
/// 根日志记录器的名称常量
///
public const string RootLoggerName = "ROOT";
///
/// 获取日志记录器的名称
///
/// 日志记录器的名称
string Name();
#region Level Enabled Check
///
/// 检查是否启用了Trace级别日志
///
/// 如果启用了Trace级别日志则返回true,否则返回false
bool IsTraceEnabled();
///
/// 检查是否启用了Debug级别日志
///
/// 如果启用了Debug级别日志则返回true,否则返回false
bool IsDebugEnabled();
///
/// 检查是否启用了Info级别日志
///
/// 如果启用了Info级别日志则返回true,否则返回false
bool IsInfoEnabled();
///
/// 检查是否启用了Warn级别日志
///
/// 如果启用了Warn级别日志则返回true,否则返回false
bool IsWarnEnabled();
///
/// 检查是否启用了Error级别日志
///
/// 如果启用了Error级别日志则返回true,否则返回false
bool IsErrorEnabled();
///
/// 检查是否启用了Fatal级别日志
///
/// 如果启用了Fatal级别日志则返回true,否则返回false
bool IsFatalEnabled();
///
/// 检查指定的日志级别是否已启用
///
/// 要检查的日志级别
/// 如果指定的日志级别已启用则返回true,否则返回false
bool IsEnabledForLevel(LogLevel level)
{
return level switch
{
LogLevel.Trace => IsTraceEnabled(),
LogLevel.Debug => IsDebugEnabled(),
LogLevel.Info => IsInfoEnabled(),
LogLevel.Warning => IsWarnEnabled(),
LogLevel.Error => IsErrorEnabled(),
LogLevel.Fatal => IsFatalEnabled(),
_ => throw new ArgumentException("Level [" + level + "] not recognized.")
};
}
#endregion
#region Trace Logging Methods
///
/// 记录 TRACE 级别的消息
///
/// 要记录的消息字符串
void Trace(string msg);
///
/// 根据指定格式和参数记录 TRACE 级别的消息
/// 当日志记录器对 TRACE 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 参数
void Trace(string format, object arg);
///
/// 根据指定格式和参数记录 TRACE 级别的消息
/// 当日志记录器对 TRACE 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 第一个参数
/// 第二个参数
void Trace(string format, object arg1, object arg2);
///
/// 根据指定格式和参数数组记录 TRACE 级别的消息
/// 当日志记录器对 TRACE 级别禁用时,此方法可避免不必要的字符串连接
///
/// 格式字符串
/// 参数数组
void Trace(string format, params object[] arguments);
///
/// 使用伴随消息在 TRACE 级别记录异常
///
/// 伴随异常的消息
/// 要记录的异常
void Trace(string msg, Exception t);
#endregion
#region Debug Logging Methods
///
/// 记录 DEBUG 级别的消息
///
/// 要记录的消息字符串
void Debug(string msg);
///
/// 根据指定格式和参数记录 DEBUG 级别的消息
/// 当日志记录器对 DEBUG 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 参数
void Debug(string format, object arg);
///
/// 根据指定格式和参数记录 DEBUG 级别的消息
/// 当日志记录器对 DEBUG 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 第一个参数
/// 第二个参数
void Debug(string format, object arg1, object arg2);
///
/// 根据指定格式和参数数组记录 DEBUG 级别的消息
/// 当日志记录器对 DEBUG 级别禁用时,此方法可避免不必要的字符串连接
///
/// 格式字符串
/// 参数数组
void Debug(string format, params object[] arguments);
///
/// 使用伴随消息在 DEBUG 级别记录异常
///
/// 伴随异常的消息
/// 要记录的异常
void Debug(string msg, Exception t);
#endregion
#region Info Logging Methods
///
/// 记录 INFO 级别的消息
///
/// 要记录的消息字符串
void Info(string msg);
///
/// 根据指定格式和参数记录 INFO 级别的消息
/// 当日志记录器对 INFO 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 参数
void Info(string format, object arg);
///
/// 根据指定格式和参数记录 INFO 级别的消息
/// 当日志记录器对 INFO 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 第一个参数
/// 第二个参数
void Info(string format, object arg1, object arg2);
///
/// 根据指定格式和参数数组记录 INFO 级别的消息
/// 当日志记录器对 INFO 级别禁用时,此方法可避免不必要的字符串连接
///
/// 格式字符串
/// 参数数组
void Info(string format, params object[] arguments);
///
/// 使用伴随消息在 INFO 级别记录异常
///
/// 伴随异常的消息
/// 要记录的异常
void Info(string msg, Exception t);
#endregion
#region Warn Logging Methods
///
/// 记录 WARN 级别的消息
///
/// 要记录的消息字符串
void Warn(string msg);
///
/// 根据指定格式和参数记录 WARN 级别的消息
/// 当日志记录器对 WARN 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 参数
void Warn(string format, object arg);
///
/// 根据指定格式和参数记录 WARN 级别的消息
/// 当日志记录器对 WARN 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 第一个参数
/// 第二个参数
void Warn(string format, object arg1, object arg2);
///
/// 根据指定格式和参数数组记录 WARN 级别的消息
/// 当日志记录器对 WARN 级别禁用时,此方法可避免不必要的字符串连接
///
/// 格式字符串
/// 参数数组
void Warn(string format, params object[] arguments);
///
/// 使用伴随消息在 WARN 级别记录异常
///
/// 伴随异常的消息
/// 要记录的异常
void Warn(string msg, Exception t);
#endregion
#region Error Logging Methods
///
/// 记录 ERROR 级别的消息
///
/// 要记录的消息字符串
void Error(string msg);
///
/// 根据指定格式和参数记录 ERROR 级别的消息
/// 当日志记录器对 ERROR 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 参数
void Error(string format, object arg);
///
/// 根据指定格式和参数记录 ERROR 级别的消息
/// 当日志记录器对 ERROR 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 第一个参数
/// 第二个参数
void Error(string format, object arg1, object arg2);
///
/// 根据指定格式和参数数组记录 ERROR 级别的消息
/// 当日志记录器对 ERROR 级别禁用时,此方法可避免不必要的字符串连接
///
/// 格式字符串
/// 参数数组
void Error(string format, params object[] arguments);
///
/// 使用伴随消息在 ERROR 级别记录异常
///
/// 伴随异常的消息
/// 要记录的异常
void Error(string msg, Exception t);
#endregion
#region Fatal Logging Methods
///
/// 记录 FATAL 级别的消息
///
/// 要记录的消息字符串
void Fatal(string msg);
///
/// 根据指定格式和参数记录 FATAL 级别的消息
/// 当日志记录器对 FATAL 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 参数
void Fatal(string format, object arg);
///
/// 根据指定格式和参数记录 FATAL 级别的消息
/// 当日志记录器对 FATAL 级别禁用时,此方法可避免不必要的对象创建
///
/// 格式字符串
/// 第一个参数
/// 第二个参数
void Fatal(string format, object arg1, object arg2);
///
/// 根据指定格式和参数数组记录 FATAL 级别的消息
/// 当日志记录器对 FATAL 级别禁用时,此方法可避免不必要的字符串连接
///
/// 格式字符串
/// 参数数组
void Fatal(string format, params object[] arguments);
///
/// 使用伴随消息在 FATAL 级别记录异常
///
/// 伴随异常的消息
/// 要记录的异常
void Fatal(string msg, Exception t);
#endregion
}