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.