Aros/Developer/Docs/Logging

This is currently a draft page ...

Logging Subsystem Components

edit
log.resource
Generic API to logging.
debug.logger
hardcoded processor for debug log output. used for
other log types until exec can handle memory requests.
generic.logger
hardcoded processor used after log.resource:init() to process all but debug logging.
NB -: should not be used inside allocmem/freemem (since it may use them) or IRQs
seriallog.resource
rom resident listener which dumps DEBUG type log output to the serial device
(configurable via grub command line)

Support Commands

edit
C
BufferLog LOGTYPE OUTPUTFILE
Registers a listener for the specified LOGTYPE which Buffers log output to an OUTPUTFILE.
SYS
Tools/LogViewer LOGFILE
Tool used to display LOGFILE's buffered with C:BufferLog.

Logging Subsystem Operations

edit

Logging API's

edit
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

edit

LOGR_RegisterListener

edit

LOGR_LogEvent

edit

Used to output data to a specified log.

LOGR_ObtainLogEvents

edit

Returns a per caller handle. if (LOG_EVENTFLAGS == LOG_EVENTLIST_UNIQUE) then it will only succeed if no other access is occurring.

internal: sets handle->active_event to the first log entry and increases its access count.

LOGR_LogEventNext

edit

(semaphore protected?)

internal: sets handle->active_event to the next log entry - decreasing the current one's access count and increasing the next's access count

LOGR_LogEventDelete

edit

(semaphore protected?)

Deletes a log entry.

internal: deletes handle->active_event - or marks it for deletion if its access count > 0

LOGR_ReleaseLogEvents

edit

Must be called with a handle obtained with LOGR_ObtainLogEvents. decreases the handle->active_event's access count, and frees the per caller handle.