跳转到内容

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 的访问计数,并释放每个调用者的句柄。

华夏公益教科书