跳到主要内容

LoggingLauncher

重要 注意 提醒

Coding Style wiki​


LoggingLauncher 是 LoggingSystem 的日志部署启动器 (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 有主工程跟热更工程的区分时,必须手动拆分创建 AOT 跟 Hotfix 的 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 返回。