-
Notifications
You must be signed in to change notification settings - Fork 0
stdlog
Logging services. Logger is serializing concurrent log writings via one buffer. Logger calls procedure given by client which may print log, store it to database etc. Log writing is sequence of data items.
Creates logger which uses procedure (or external procedure) given as argument.
type: procedure
Arguments:
- log handler procedure: this is called for handling log writing
- optionally map which consists options for logger
Logger options (map keys):
Key | Meaning |
---|---|
'buffer-size' | int, buffer size for buffering log writings (default is 1024) |
Format:
call(stdlog.get-logger <log-handler-procedure>) -> <logger-external-procedure>
call(stdlog.get-logger <log-handler-procedure> <map-options>) -> <logger-external-procedure>
Return value: external procedure (used for log writing)
logger-procedure format (for writing log):
call(<logger-procedure> <arg-1> <arg-2> ...) -> true
Example:
import stdlog
my-log = proc(item)
import stdio
call(stdio.printline 'my-log: ' item)
end
#log = call(stdlog.get-logger my-log map('buffer-size' 100))
log = call(stdlog.get-logger my-log)
_ = call(log 'something happened' 10 20)
_ = call(log list(1 2 3))
_ = call(log 'ok')
_ = call(log 'fail')
import stdtime
call(stdtime.sleep 1)
->
my-log: list('something happened', 10, 20)
my-log: list(list(1, 2, 3))
my-log: list('ok')
my-log: list('fail')
Creates logger which is wrppaer for Go's standard library logger. Options can be given in map as argument (optional). Logger writes to standard error.
type: procedure
Logger options (map keys):
Key | Meaning |
---|---|
'prefix' | prefix string for each log writing (defualt is none) |
'separator' | fiels separator (':' is default) |
'date' | if true date is written (default is false) |
'time' | if true time is written (default is false) |
'microseconds' | if true microseconds is written (default is false) |
'UTC' | if true date and time is written in UTC format (default is false) |
Format:
call(stdlog.get-default-logger) -> <logger-external-procedure>
call(stdlog.get-logger <map-options>) -> <logger-external-procedure>
Return value: external procedure (used for log writing)
logger-procedure format (for writing log):
call(<logger-procedure> <arg-1> <arg-2> ...) -> true
Example: No options map given
log = call(stdlog.get-default-logger)
_ = call(log 'something happened' 10 20)
->
:'something happened':10:20
Example: Options map given
options = map(
'prefix' 'MYLOG: '
'separator' ' | '
'date' true
'time' true
'microseconds' true
'UTC' true
)
log = call(stdlog.get-default-logger options)
_ = call(log 'something happened' 10 20)
->
MYLOG: 2020/04/29 17:09:45.146485 | 'something happened' | 10 | 20