跳至主要内容

模塊介紹

重要 注意 提醒

Coding Style wiki


基本說明

日誌系統,支持 Cipher & Plaintext (可以任意轉換),支持動態配置覆寫原有的日誌器功能,其他還有全域開關配置、全域級別配置、全域顏色配置、個別開關配置、個別級別配置、個別顏色配置。

  • 版本:v1.4.3 (com.michaelo.oxgkit.loggingsystem)
  • 命名空間:OxGKit.LoggingSystem

注意 OxGKit 多數模組 (InfiniteScrollView、ActionSystem、NoticeSystem、InputSystem、TimeSystem、PoolSystem、Utilities) 皆依賴本模組作為日誌輸出,建議最先安裝


應用說明

建立配置文件

  • 透過 Right-Click Create/OxGKit/Logging System/Create loggersconfig.conf (自動存於 StreamingAssets) 建立配置文件,方便真機修改配置文件進行調適。

  • 透過 LoggingLauncher 進行配置,或直接修改 StreamingAssets 中的配置文件。

Build 激活宏

重要 發布 (Build) 時,需在 Player Settings -> Scripting Define Symbols 加入以下宏,日誌才會輸出 (Editor 下不需要):

OXGKIT_LOGGER_ON

配置文件編碼格式轉換

配置文件支持 BYTES [Cipher] 與 JSON [Plaintext] 互相轉換 (Right-Click 選單)。

提醒 發布建議使用 Cipher

LoggingLauncher 配置介面

LoggingLauncher 可以配置 logActive (開關)logLevel (級別)logColor (顏色)

  • 透過 Package Manager -> Samples 匯入 LoggingLauncher Prefab,再拖曳至場景上激活環境配置 (僅需激活一次),會自動嘗試加載 StreamingAssets 中的配置文件進行日誌開關控制。

Log Level (級別)

Log Level 可切換為以下:

  • LogDebug (Print)
  • LogInfo (PrintInfo)
  • LogWarning (PrintWarning)
  • LogError (PrintError)
  • LogException (PrintException)

表格符號說明:

  • G = Global (全域設定 / Master Logging Level)。
  • P = Per-Logger (個別 Logger 的設定)。
  • Gx = 單一全域級別:LogDebug / LogInfo / LogWarning / LogError / LogException。
  • Px = 單一個別級別:LogDebug / LogInfo / LogWarning / LogError / LogException。
  • G ∩ P = 旗標交集 (bitwise AND),代表同時被全域與個別允許的級別集合。

總結規則:只有當 G 與 P 都包含該級別時,該級別 (Log Level) 才會進行輸出

全域 (G)個別 (P)生效級別 (輸出)
OffAny
AnyOff
AllAllDEBUG / INFO / WARNING / ERROR / EXCEPTION → ✓
All單一 PxPx → ✓
單一 GxAllGx → ✓
單一 Gx單一 PxGx = PxGx → ✓;否則 ✗
任意集合 G任意集合 PG ∩ P → ✓;若無交集 → ✗

Log Color (顏色)

Log Color 可切換為以下:

  • Disabled
  • Enabled
  • EditorOnly (發布時,不進行 RichText 上色處理)
全域 (G)個別 (P)生效模式EditorPlayer / 發布
DisabledAnyDisabled
EnabledDisabledDisabled
EditorOnlyDisabledDisabled
EnabledEnabledEnabled
EnabledEditorOnlyEditorOnly
EditorOnlyEnabledEditorOnly
EditorOnlyEditorOnlyEditorOnly


簡單使用

實作自定義 Logger

新增 Logger 或移除 Logger,皆需呼叫 LoggingLauncher.TryLoadLoggers() 進行重載 (建議定義一個 default constructor,避免搭配 HybridCLR + Activator.CreateInstance(type) 出現錯誤)。

using OxGKit.LoggingSystem;

[LoggerName("MyLogger")]
public class MyLogger1 : Logging
{
// If use HybridCLR must create a default constructor
public MyLogger1() { }
}

覆寫原有 Logger (Override)

// Use same name to override MyLogger1
[LoggerName("MyLogger", true)]
public class OverrideMyLogger1 : Logging
{
// If use HybridCLR must create a default constructor
public OverrideMyLogger1() { }

public override void Log(object message)
{
UnityEngine.Debug.Log("[Override]" + message);
}

public override void LogInfo(object message)
{
UnityEngine.Debug.Log("[Override]" + message);
}

public override void LogWarning(object message)
{
UnityEngine.Debug.LogWarning("[Override]" + message);
}

public override void LogError(object message)
{
UnityEngine.Debug.LogError("[Override]" + message);
}

public override void LogException(Exception exception)
{
UnityEngine.Debug.LogException(exception);
}
}

搭配 HybridCLR

如果搭配 HybridCLR 有主工程跟熱更工程的區分,必須手動拆分創建 AOT 跟 Hotfix 的 Loggers 初始流程,可以參考以下:

// HybridCLR (必須取消 LoggingLauncher 上的 "Initialize On Awake" 選項):
LoggingLauncher.CreateLogger<LoggingDemoLogger1>();
LoggingLauncher.CreateLogger<LoggingDemoLogger2>();
LoggingLauncher.CreateLogger<LoggingDemoLogger3>();
LoggingLauncher.CreateLogger<LoggingDemoLogger4>();
LoggingLauncher.TryLoadLoggers();

以下是在 AOT 工程中初始 AOT 工程的 Loggers (如果 Hotfix 工程的 Loggers 需要在 Hotfix 工程中初始)

動態配置日誌器

// Reload LoggersConfig at Runtime (方式一)
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);

// Reload LoggersConfig at Runtime (方式二)
LoggingLauncher.ConfigureLogger("LoggingDemo.Logger1", false);
LoggingLauncher.ConfigureLogger("LoggingDemo.Logger2", true, LogLevel.LogWarning | LogLevel.LogError);
LoggingLauncher.ConfigureLogger("LoggingDemo.Logger3", false);

[參考 Example]


Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/LoggingSystem/Scripts to Package Manager

第三方庫 (需自行安裝)

Samples (Package Manager -> Samples)

  • AI Agent Skills (參考 AI Agent Skills)
  • LoggingLauncher Prefab
  • LoggingSystem Demo

模塊 API


Demo

LoggingSystem Demo

LoggingSystem Build Test