mFrame
載入中...
搜尋中...
無符合項目
ufm::util::SinkLogger 類別 參考文件

日誌接收器類別,負責實際的日誌輸出處理。 更多...

#include <SinkLogger.h>

類別ufm::util::SinkLogger的繼承圖:
ufm::lang::Object ufm::lang::Interface

公開型態

enum struct  Level : uint8 {
  SEVERE = 1 , WARNING = 2 , INFO = 3 , CONFIG = 4 ,
  FINE = 5 , FINER = 6 , FINEST = 7
}
 日誌級別列舉,定義日誌訊息的重要性層級。 更多...
 

公開方法(Public Methods)

 SinkLogger (ufm::io::PrintStream &printStream)
 建構 SinkLogger 物件,關聯到指定的輸出流。
 
virtual ~SinkLogger (void) override
 解構 SinkLogger 物件,清理相關資源。
 
 operator ufm::io::PrintStream & ()
 隱式轉型為 ufm::io::PrintStream&,允許直接使用 SinkLogger 作為 PrintStream。
 
ufm::io::PrintStreamlog (Level level, const char *vName="", const char *message="")
 記錄一條指定級別的日誌訊息,包含來源名稱和訊息內容。
 
SinkLoggersetLevel (Level level)
 設定日誌輸出的最低級別,低於此級別的訊息將被忽略。
 
Level getLevel (void) const
 取得目前設定的日誌輸出級別。
 
ufm::io::PrintStreamprintStream (void)
 取得原始的 PrintStream 物件參考,不受日誌級別過濾影響。
 
uint64 getTimeStamp (void) const
 取得當前時間戳,精確到毫秒。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (void) override
 取得對應的 Object 物件
 
void delay (int milliseconds) const
 延遲指定的毫秒數進行執行緒等待
 
bool equals (Object *object) const
 判斷與另一物件是否為相同參照(指標型態比較)
 
bool equals (Object &object) const
 判斷與另一物件是否為相同參照(參照型態比較)
 
void wait (void) const
 使當前線程等待直到被通知
 
bool wait (int timeout) const
 等待通知或超時
 
bool yield (void) const
 讓執行緒讓渡控制權給同優先權的下一個執行緒
 
int lock (void) const
 核心鎖定,鎖定期間禁止線程切換
 
int unlock (void) const
 核心解鎖
 
ufm::sys::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 

詳細描述

日誌接收器類別,負責實際的日誌輸出處理。

SinkLogger 是日誌系統的核心類別,管理日誌的輸出流、級別控制和格式化。 所有日誌訊息最終都會透過此類別輸出到指定的 PrintStream。 支援日誌級別過濾,只有達到設定級別的訊息才會被輸出。

使用範例:
// 建立輸出流(假設已有可用的 PrintStream)
ufm::io::PrintStream& output = getOutputStrem(); // 假設有取得輸出流的方法
// 建立 SinkLogger 並關聯到輸出流
ufm::util::SinkLogger sinkLogger(output);
// 設定日誌輸出級別(只輸出 INFO 及更高級別的訊息)
// 記錄不同級別的日誌
sinkLogger.log(ufm::util::SinkLogger::Level::INFO, "System", "系統啟動")
.print("初始化完成時間: ")
.println("10ms");
// 記錄警告訊息
sinkLogger.log(ufm::util::SinkLogger::Level::WARNING, "Memory", "記憶體使用率")
.format("目前使用: %d%%\n", 85);
// 記錄錯誤訊息並立即輸出
sinkLogger.log(ufm::util::SinkLogger::Level::SEVERE, "Network", "連線失敗");
sinkLogger.finalize(); // 強制輸出緩衝內容
// 級別過濾測試(FINE 級別會被忽略,因為設定為 INFO)
sinkLogger.log(ufm::util::SinkLogger::Level::FINE, "Debug", "除錯訊息"); // 不會輸出
// 當作 PrintStream 使用
static_cast<ufm::io::PrintStream&>(sinkLogger) << "直接輸出文字\n";
// 檢查目前的日誌級別設定
if (sinkLogger.getLevel() <= ufm::util::SinkLogger::Level::CONFIG) {
sinkLogger.log(ufm::util::SinkLogger::Level::CONFIG, "App", "配置資訊");
}
格式化輸出串流
Definition PrintStream.h:44
日誌接收器類別,負責實際的日誌輸出處理。
Definition SinkLogger.h:89
@ WARNING
警告訊息,可能導致問題但不影響基本功能。
@ SEVERE
嚴重錯誤,系統可能無法正常運作。
@ INFO
一般資訊,記錄系統正常運作狀態。
@ CONFIG
配置相關訊息,記錄系統設定資訊。
@ FINE
基本除錯資訊,用於一般的問題追蹤。
日誌輸出格式:
[12345.678901][INFO][System] 系統啟動初始化完成時間: 10ms
[12346.123456][WARNING][Memory] 記憶體使用率目前使用: 85%
[12347.234567][SEVERE][Network] 連線失敗
直接輸出文字
[12348.345678][CONFIG][App] 配置資訊
參閱
ufm::util::Logger
ufm::io::PrintStream
ufm::lang::Appendable

列舉型態成員說明文件

◆ Level

enum struct ufm::util::SinkLogger::Level : uint8
strong

日誌級別列舉,定義日誌訊息的重要性層級。

日誌級別由低到高排序,數值越小表示越重要的訊息。 當設定輸出級別時,只有等於或低於該級別的訊息才會被輸出。

級別說明:

  • SEVERE: 嚴重錯誤,系統可能無法繼續運作
  • WARNING: 警告訊息,可能導致問題但不影響基本功能
  • INFO: 一般資訊,記錄系統正常運作狀態
  • CONFIG: 配置相關訊息,記錄系統設定資訊
  • FINE: 基本除錯資訊,用於一般的問題追蹤
  • FINER: 詳細除錯資訊,提供更多的執行細節
  • FINEST: 最詳細除錯資訊,包含所有執行步驟
列舉值
SEVERE 

嚴重錯誤,系統可能無法正常運作。

WARNING 

警告訊息,可能導致問題但不影響基本功能。

INFO 

一般資訊,記錄系統正常運作狀態。

CONFIG 

配置相關訊息,記錄系統設定資訊。

FINE 

基本除錯資訊,用於一般的問題追蹤。

FINER 

詳細除錯資訊,提供更多的執行細節。

FINEST 

最詳細除錯資訊,包含所有執行步驟。

建構子與解構子說明文件

◆ SinkLogger()

ufm::util::SinkLogger::SinkLogger ( ufm::io::PrintStream & printStream)

建構 SinkLogger 物件,關聯到指定的輸出流。

參數
printStream輸出流物件,所有日誌訊息將輸出到此流。

函式成員說明文件

◆ getLevel()

Level ufm::util::SinkLogger::getLevel ( void ) const
inline

取得目前設定的日誌輸出級別。

傳回值
Level 目前設定的日誌級別。

◆ getTimeStamp()

uint64 ufm::util::SinkLogger::getTimeStamp ( void ) const
inline

取得當前時間戳,精確到毫秒。

此方法返回自系統啟動以來的時間戳,單位為毫秒。 用於日誌輸出時的時間標記,便於追蹤事件發生的時間。

傳回值
uint64 當前時間戳(毫秒)。

◆ log()

ufm::io::PrintStream & ufm::util::SinkLogger::log ( Level level,
const char * vName = "",
const char * message = "" )

記錄一條指定級別的日誌訊息,包含來源名稱和訊息內容。

參數
level日誌級別,決定訊息的重要性。
vName日誌來源名稱,用於識別訊息來源,預設為空字串。
message日誌訊息內容,預設為空字串。
傳回值
ufm::io::PrintStream& 回傳 PrintStream 物件參考,支援鏈式呼叫。

◆ operator ufm::io::PrintStream &()

ufm::util::SinkLogger::operator ufm::io::PrintStream & ( )
inline

隱式轉型為 ufm::io::PrintStream&,允許直接使用 SinkLogger 作為 PrintStream。

這樣可以方便地將 SinkLogger 用於需要 PrintStream 的上下文中。

傳回值
內部的 PrintStream 物件參考。

◆ printStream()

ufm::io::PrintStream & ufm::util::SinkLogger::printStream ( void )
inline

取得原始的 PrintStream 物件參考,不受日誌級別過濾影響。

此方法回傳的 PrintStream 會直接輸出到底層流,完全繞過日誌級別控制。 適用於需要強制輸出、系統訊息或緊急狀況下的直接輸出。

傳回值
ufm::io::PrintStream& 原始 PrintStream 物件參考,保證輸出不被級別過濾。

◆ setLevel()

SinkLogger & ufm::util::SinkLogger::setLevel ( Level level)
inline

設定日誌輸出的最低級別,低於此級別的訊息將被忽略。

參數
level欲設定的日誌級別,只有此級別或更高級別的訊息才會被輸出。
傳回值
SinkLogger& 回傳目前 SinkLogger 物件參考,支援鏈式呼叫。

此類別(class) 文件是由下列檔案中產生: