跳到主要内容

LoggingLauncher

重要 注意 提醒

Coding Style wiki


LoggingLauncherLoggingSystem 的日志部署启动器 (MonoBehaviour 单例),负责日志器的初始与加载配置文件 (StreamingAssets),并提供全局 (Master) 与个别日志器的动态配置 API;可通过 Samples 导入 LoggingLauncher Prefab 拖拽至场景激活 (仅需激活一次)。

命名空间OxGKit.LoggingSystem
类型public class LoggingLauncher : MonoBehaviour
源码LoggingLauncher.cs
using OxGKit.LoggingSystem;

注意 标注 [StartCoroutine] 的方法为包装协程的便捷调用;各方法皆有对应的 [Async] 版本 (IEnumerator),可自行以协程等待完成时机。

快速上手

using OxGKit.LoggingSystem;

// 场景上已放置 LoggingLauncher Prefab (Initialize On Awake)
// -> 会自动 InitLoggers + 加载 StreamingAssets 配置文件

// 动态配置单一日志器
LoggingLauncher.ConfigureLogger("Game.Logger", true, LogLevel.LogWarning | LogLevel.LogError);

// 全局开关
LoggingLauncher.ToggleMasterLogging(false);

// 自定义配置 (动态配置日志器)
var loggersConfig = new LoggersConfig
(
new LoggerSettings("Game.Logger", true, LogLevel.All)
);
LoggingLauncher.SetLoggersConfig(loggersConfig);

通用规则

初始流程

  1. Initialize On Awake (默认):LoggingLauncher 于 Awake 自动执行 InitLoggers (反射收集所有 Logging 实现) 并尝试加载 StreamingAssets 配置文件。
  2. 手动初始 (HybridCLR):取消 Inspector 上的 "Initialize On Awake" 选项,自行调用 CreateLogger 逐一注册,最后调用 TryLoadLoggers 应用配置。

重要 搭配 HybridCLR 有主工程跟热更工程的区分时,必须手动拆分创建 AOTHotfix 的 Loggers 初始流程 (Hotfix 工程的 Loggers 需在 Hotfix 工程中初始)。

配置生效条件

重要 仅于 UNITY_EDITOR 或已定义 OXGKIT_LOGGER_ON 宏时,才会进行日志器加载与输出,否则会提示 Not enabled LoggingSystem by symbol [OXGKIT_LOGGER_ON]


成员

成员说明
public bool initLoggersOnAwake是否于 Awake 自动初始 (Inspector: Initialize On Awake),搭配 HybridCLR 手动初始时需取消。
public LoggersConfig loggersConfig当前的日志器配置数据 (LoggersConfig)。
public static ConfigFileType currentConfigFileType当前配置文件类型 (Json / Bytes),默认 Bytes

日志器管理

方法总览

方法说明
InitLoggers反射收集并初始所有日志器。
ClearLoggers清除所有已注册日志器。
CreateLogger手动注册单一日志器 (HybridCLR 流程)。
TryInitLoggers初始所有日志器并加载配置文件。
TryLoadLoggers依配置文件重载日志器设置。

InitLoggers

public static void InitLoggers()

以反射收集所有 Logging 实现类并创建实例 (含 LoggerName 的名称与覆写处理)。

ClearLoggers

public static void ClearLoggers()

清除所有已注册的日志器缓存。

CreateLogger

public static void CreateLogger<TLogging>() where TLogging : Logging, new()

手动注册单一日志器,用于 HybridCLR 手动拆分 AOT / Hotfix 初始流程 (避免反射收集不到热更工程的类型)。

// HybridCLR (必须取消 LoggingLauncher 上的 "Initialize On Awake" 选项):
LoggingLauncher.CreateLogger<LoggingDemoLogger1>();
LoggingLauncher.CreateLogger<LoggingDemoLogger2>();
LoggingLauncher.TryLoadLoggers();

TryInitLoggers

// [StartCoroutine]
public static void TryInitLoggers()

// [Async]
public static IEnumerator TryInitLoggersAsync()

初始所有日志器 (InitLoggers) 并加载 StreamingAssets 配置文件应用设置 (等同 Awake 自动初始流程)。

TryLoadLoggers

// [StartCoroutine]
public static void TryLoadLoggers()

// [Async]
public static IEnumerator TryLoadLoggersAsync()

依配置文件重载日志器设置;新增或移除 Logger 后皆需调用此方法进行重载


全局配置 (Master)

方法总览

方法说明
ToggleMasterLogging全局开关 (启用/停用所有日志器)。
LevelMasterLogging设置全局日志级别。
ColorMasterLogging设置全局日志颜色模式。

ToggleMasterLogging

// [StartCoroutine]
public static void ToggleMasterLogging(bool logMainActive)

// [Async]
public static IEnumerator ToggleMasterLoggingAsync(bool logMainActive)

切换全局开关 (Master Logging Toggle),关闭时所有日志器皆不输出。

LevelMasterLogging

// [StartCoroutine]
public static void LevelMasterLogging(LogLevel logMainLevel)

// [Async]
public static IEnumerator LevelMasterLoggingAsync(LogLevel logMainLevel)

设置全局级别 (Master Logging Level),与个别级别取交集后生效 (详见级别规则表)。

ColorMasterLogging

// [StartCoroutine]
public static void ColorMasterLogging(LogColor logMainColor)

// [Async]
public static IEnumerator ColorMasterLoggingAsync(LogColor logMainColor)

设置全局颜色模式 (Master Logging Color),与个别颜色模式取较严格者生效 (详见颜色规则表)。


个别配置

方法总览

方法说明
ConfigureLogger配置指定日志器的开关/级别/颜色。
ConfigureAllLoggers一次配置所有日志器的开关/级别/颜色。
SetLoggersConfig以自定义 LoggersConfig 覆盖当前配置并重载。

ConfigureLogger

// [StartCoroutine]
public static void ConfigureLogger(string loggerName, bool logActive, LogLevel logLevel = LogLevel.All, LogColor logColor = LogColor.EditorOnly)

// [Async]
public static IEnumerator ConfigureLoggerAsync(string loggerName, bool logActive, LogLevel logLevel = LogLevel.All, LogColor logColor = LogColor.EditorOnly)

配置指定名称日志器的开关、级别与颜色模式,配置后自动重载。

LoggingLauncher.ConfigureLogger("Game.Logger", true, LogLevel.LogWarning | LogLevel.LogError);

ConfigureAllLoggers

// [StartCoroutine]
public static void ConfigureAllLoggers(bool logActive, LogLevel logLevel = LogLevel.All, LogColor logColor = LogColor.EditorOnly)

// [Async]
public static IEnumerator ConfigureAllLoggersAsync(bool logActive, LogLevel logLevel = LogLevel.All, LogColor logColor = LogColor.EditorOnly)

一次配置所有日志器的开关、级别与颜色模式,配置后自动重载。

SetLoggersConfig

// [StartCoroutine]
public static void SetLoggersConfig(LoggersConfig loggersConfig)

// [Async]
public static IEnumerator SetLoggersConfigAsync(LoggersConfig loggersConfig)

自定义的 LoggersConfig 覆盖当前配置并重载 (动态配置日志器)。

var loggersConfig = new LoggersConfig
(
new LoggerSettings("LoggingDemo.Logger1", true, LogLevel.LogDebug),
new LoggerSettings("LoggingDemo.Logger2", true, LogLevel.LogWarning),
new LoggerSettings("LoggingDemo.Logger3", true, LogLevel.Off)
);
LoggingLauncher.SetLoggersConfig(loggersConfig);

配置重载

方法总览

方法说明
ReloadLoggersConfig(实例) 重新初始日志器并同步配置清单。
ReloadFromLoggersConfig(实例) 从配置文件重新加载配置。
ResetLoggersConfig(实例) 清空配置并重建。
ReloadLoggersConfigAndSet同步配置清单与当前日志器实现 (新增/移除比对)。

ReloadLoggersConfig

// [StartCoroutine]
public void ReloadLoggersConfig(Action<LoggersConfig> result = null)

// [Async]
public IEnumerator ReloadLoggersConfigAsync(Action<LoggersConfig> result = null)

(实例方法) 重新初始日志器并同步配置清单,完成后通过 result 返回当前配置。

ReloadFromLoggersConfig

// [StartCoroutine]
public void ReloadFromLoggersConfig(Action<LoggersConfig> result = null)

// [Async]
public IEnumerator ReloadFromLoggersConfigAsync(Action<LoggersConfig> result = null)

(实例方法) 从 StreamingAssets 配置文件重新加载配置。

ResetLoggersConfig

// [StartCoroutine]
public void ResetLoggersConfig(Action<LoggersConfig> result = null)

// [Async]
public IEnumerator ResetLoggersConfigAsync(Action<LoggersConfig> result = null)

(实例方法) 清空当前配置并以默认值重建。

ReloadLoggersConfigAndSet

public static void ReloadLoggersConfigAndSet(LoggersConfig loggersConfig, Action<LoggersConfig> result)

将传入的配置清单与当前已注册日志器实现进行比对同步 (自动补上新日志器、移除不存在的日志器),完成后通过 result 返回。