跳轉到內容

Aros/開發者/文件/日誌記錄

來自華夏公益教科書,為開放世界提供開放的書籍

這目前是一個草稿頁面...

日誌記錄子系統元件

[編輯 | 編輯原始碼]
log.resource
對日誌記錄的通用 API。
debug.logger
用於除錯日誌輸出的硬編碼處理器。用於
其他日誌型別,直到 exec 可以處理記憶體請求。
generic.logger
在 log.resource:init() 之後使用的硬編碼處理器,用於處理除除錯日誌記錄之外的所有日誌記錄。
注意 -:不應在 allocmem/freemem(因為它可能使用它們)或 IRQ 中使用
seriallog.resource
將 DEBUG 型別日誌輸出轉儲到序列裝置的 ROM 常駐監聽器
(可透過 grub 命令列配置)

支援命令

[編輯 | 編輯原始碼]
C
BufferLog LOGTYPE OUTPUTFILE
為指定的 LOGTYPE 註冊一個監聽器,該監聽器將日誌輸出緩衝到 OUTPUTFILE。
SYS
Tools/LogViewer LOGFILE
用於顯示使用 C:BufferLog 緩衝的 LOGFILE 的工具。

日誌記錄子系統操作

[編輯 | 編輯原始碼]

日誌記錄 API

[編輯 | 編輯原始碼]
LOG_TYPEID
LOG_DATA
LOG_TYPE_DEBUG
DEBUG_ERROR
DEBUG_WARN
DEBUG_INFO
LOG_TYPE_SYSTEM
SYSTEM_ERROR
SYSTEM_WARN
SYSTEM_INFO
LOG_TYPE_APPLICATION
APPLICATION_ERROR
APPLICATION_WARN
APPLICATION_INFO

IPTR LOGR_RegisterProcessor(LOG_TYPEID, struct LogProcessor *)

IPTR LOGR_RegisterListener(LOG_TYPEID, struct LogListener *)

BOOL LOGR_LogEvent(LOG_TYPEID, LOG_DATA, char *LOG_SRC, char *LOG_TEMPLATE, args ...)

IPTR LOGR_ObtainLogEvents(LOG_TYPEID, LOG_EVENTFLAGS)

IPTR LOGR_LogEventNext(IPTR)

IPTR LOGR_LogEventDelete(IPTR)

IPTR LOGR_ReleaseLogEvents(IPTR)

LOGR_RegisterProcessor

[編輯 | 編輯原始碼]

LOGR_RegisterListener

[編輯 | 編輯原始碼]

LOGR_LogEvent

[編輯 | 編輯原始碼]

用於將資料輸出到指定的日誌。

LOGR_ObtainLogEvents

[編輯 | 編輯原始碼]

返回每個呼叫者的控制代碼。如果 (LOG_EVENTFLAGS == LOG_EVENTLIST_UNIQUE) 則只有在沒有其他訪問發生時才會成功。

內部:將 handle->active_event 設定為第一個日誌條目,並增加其訪問計數。

LOGR_LogEventNext

[編輯 | 編輯原始碼]

(訊號量保護?)

內部:將 handle->active_event 設定為下一個日誌條目 - 減少當前條目的訪問計數並增加下一個條目的訪問計數

LOGR_LogEventDelete

[編輯 | 編輯原始碼]

(訊號量保護?)

刪除一個日誌條目。

內部:刪除 handle->active_event - 或者如果其訪問計數 > 0,則將其標記為刪除

LOGR_ReleaseLogEvents

[編輯 | 編輯原始碼]

必須使用從 LOGR_ObtainLogEvents 獲取的控制代碼呼叫。減少 handle->active_event 的訪問計數,並釋放每個呼叫者的控制代碼。

華夏公益教科書