Module ammcore.log

Error reporting facilities.

Basic usage

Create an instance of Logger. By default, it will inherit its name from the module where it was created.

Then, use the Logger to print messages:

local log = require "ammcore.log"

local logger = log.Logger:New()

logger.info("Print any messages you like!")
logger.info("You can even format them: %s", "how cool is that?")

Configuring logging level

You can configure logging level for each logger individually by calling Logger:setLevel() or by setting its level via the BootloaderConfig (see logLevels).

You can also configure level for the root logger by adding logLevel parameter to the computer’s nick (see ammcore.nick).

Index

Data

LevelName

Mapping from log level to its canonical name.

Function

levelFromName()

Parse level name and return an appropriate level value.

parseLogRecord()

Parse a log record and get its components.

Class

Level

Logging level.

Logger

Logger.

Data

ammcore.log.LevelName: table<ammcore.log.Level, string>

Mapping from log level to its canonical name.

You can add your own names if you plan on extending the logging system.

Function

ammcore.log.levelFromName(name: string | integer) levelName?: ammcore.log.Level

Parse level name and return an appropriate level value.

Parameters:

name (string | integer) – level name or value.

Returns:

levelName? (ammcore.log.Level) – level value.

ammcore.log.parseLogRecord(s: string, msgLevel: integer) {logger: string, level: integer, message: string}

Parse a log record and get its components.

If parsing fails, assume the record was printed manually.

Parameters:
  • s (string) – string that was printed.

  • msgLevel (integer) – verbosity that was used to print the string.

Class

class ammcore.log.Level : integer

Logging level.

Trace: ammcore.log.Level

For detailed log that you only need to see when investigating behaviour of a certain system. It doesn’t make sense to enable trace logging for the root logger, there’s just too many of them.

Debug: ammcore.log.Level

For messages that are helpful when you’re investigating an error and need more information, but aren’t intended for end users.

Info: ammcore.log.Level

For messages intended for the end user.

Warning: ammcore.log.Level

Something that the user should be aware of.

Warnings indicate that system’s behaviour may differ from what the user might be expecting, but otherwise they don’t require user attention.

Error: ammcore.log.Level

Something went wrong and parts of the system aren’t operational, but some other parts keep working, or there is a chance they’ll recover.

Errors require eventual user attention.

Critical: ammcore.log.Level

Something went so wrong that the system can’t operate any longer.

Errors require immediate user attention.

class ammcore.log.Logger : ammcore.class.Base

Logger.

classmethod New(self: <T: ammcore.log.Logger>, name?: string) <T: ammcore.log.Logger>
const name: string

Name of this logger.

protected const _prefix: string

Prefix to be printed before every message.

protected const _parent: ammcore.log.Logger?

Parent logger, if any.

setLevel(self: ammcore.log.Logger, level?: ammcore.log.Level)

Set level for this logger.

If this logger has no level, messages will be relayed to its parent. Otherwise, they will be displayed or ignored according to the level given.

Parameters:

level? (ammcore.log.Level) – new logging level.

getLevel(self: ammcore.log.Logger) level?: ammcore.log.Level

Get level for this logger.

Returns:

level? (ammcore.log.Level) – current logging level.

getEffectiveLevel(self: ammcore.log.Logger) level: ammcore.log.Level

Get level of this logger; if it has no configured level, return level of its parent.

Returns:

level (ammcore.log.Level) – current effective logging level.

log(self: ammcore.log.Logger, level: ammcore.log.Level, msg: string, ...: any)

Log a message with the given level.

Parameters:
trace(self: ammcore.log.Logger, msg: string, ...: any)

Log a trace message.

See ammcore.log.Level.Trace for details.

Parameters:
debug(self: ammcore.log.Logger, msg: string, ...: any)

Log a debug message.

See ammcore.log.Level.Debug for details.

Parameters:
info(self: ammcore.log.Logger, msg: string, ...: any)

Log an info message.

See ammcore.log.Level.Info for details.

Parameters:
warning(self: ammcore.log.Logger, msg: string, ...: any)

Log a warning message.

See ammcore.log.Level.Warning for details.

Parameters:
error(self: ammcore.log.Logger, msg: string, ...: any)

Log an error message.

See ammcore.log.Level.Error for details.

Parameters:
critical(self: ammcore.log.Logger, msg: string, ...: any)

Log a critical message.

Parameters: