Logging¶
This module provides logging to HALMD scripts and modules.
Script Logger¶
The script logger may be used in HALMD scripts.
A message is logged with one of the following severity levels.
Severity | Description |
---|---|
error | An error has occurred, and HALMD will abort |
warning | Warn user, e.g., when using single precision |
message | Normal logging level, e.g., for simulation progress and parameters |
info | More verbose logging level, e.g., for internal parameters |
debug | Low frequency debugging messages |
trace | High frequency debugging messages |
This example shows use of the script logger:
local halmd = require("halmd")
local log = halmd.io.log
function my_simulation(args)
log.info("box edge lengths: %s", table.concat(args.length, " "))
log.message("equilibrate system for %d steps", args.equilibrate)
log.message("measure mean-square displacement for %d steps", args.steps)
end
-
halmd.io.log.
error
(format, ...)¶ Log message with severity
error
.Parameters: format (string) – see string.format
-
halmd.io.log.
warning
(format, ...)¶ Log message with severity
warning
.Parameters: format (string) – see string.format
-
halmd.io.log.
message
(format, ...)¶ Log message with severity
message
.Parameters: format (string) – see string.format
-
halmd.io.log.
info
(format, ...)¶ Log message with severity
info
.Parameters: format (string) – see string.format
-
halmd.io.log.
debug
(format, ...)¶ Log message with severity
debug
.Parameters: format (string) – see string.format
-
halmd.io.log.
trace
(format, ...)¶ Log message with severity
trace
.Parameters: format (string) – see string.format
Module Logger¶
This class provides module loggers for Lua and C++ modules.
A logger may optionally have a label, which is prepended to messages to distinguish output of a module from that of other modules.
This example shows use of a logger in a HALMD module:
local log = require("halmd.io.log")
local module = require("halmd.utility.module")
-- C++ class
local my_potential = assert(libhalmd.mdsim.potentials.my_potential)
-- use the same logger for all instances
local logger = log.logger({label = "my_potential"})
local M = module(function(args)
-- logs message with prefix "my_potential: "
logger:message("parameters: %g %g %g", 1.0, 0.88, 0.8)
-- pass module logger to C++ constructor
local self = my_potential(..., logger)
return self
end)
return M
-
class
halmd.io.log.
logger
(args)¶ Construct a logger instance, optionally with given label.
Parameters: - args (table) – keyword arguments (optional)
- args.label (string) – logging prefix (optional)
-
error
(format, ...)¶ Log message with severity
error
.Parameters: format (string) – see string.format
-
warning
(format, ...)¶ Log message with severity
warning
.Parameters: format (string) – see string.format
-
message
(format, ...)¶ Log message with severity
message
.Parameters: format (string) – see string.format
-
info
(format, ...)¶ Log message with severity
info
.Parameters: format (string) – see string.format
-
debug
(format, ...)¶ Log message with severity
debug
.Parameters: format (string) – see string.format
-
trace
(format, ...)¶ Log message with severity
trace
.Parameters: format (string) – see string.format
Logging Setup¶
The following functions setup available logging sinks.
By default, messages are logged to console with severity warning
.
This example shows logging setup in a HALMD script:
local halmd = require("halmd")
-- log warning and error messages to console
halmd.io.log.open_console({severity = "warning"})
-- log anything except trace messages to file
halmd.io.log.open_file("kob_andersen.log", {severity = "debug"})
-
halmd.io.log.
open_console
(args)¶ Log messages with equal or higher
severity
to console.If
severity
is not specified, it is set tomessage
.Parameters: - args (table) – keyword arguments (optional)
- args.severity (string) – log severity level (optional)
-
halmd.io.log.
close_console
()¶ Disable logging to console.
-
halmd.io.log.
open_file
(filename, args)¶ Log messages with equal or higher
severity
to file.If
severity
is not specified, it is set tomessage
.If a file with
filename
exists, it is truncated.Parameters: - filename (string) – log filename
- args (table) – keyword arguments (optional)
- args.severity (string) – log severity level (optional)
-
halmd.io.log.
close_file
()¶ Close log file.