FTN9: FutoIn Interface - AuditLog Version: 1.0 Date: 2015-01-21 Copyright: 2014 FutoIn Project (http://futoin.org) Authors: Andrey Galkin
It is assumed that there is a central sink for all audit log messages in the system. There should be no individual logging mechanism per component.
There should be universal Invoker and Executor API wrapper interface with handy shortcuts and formatting.
{
"iface" : "futoin.log",
"version" : "{ver}",
"ftn3rev" : "1.1",
"types" : {
"LogLevel" : {
"type" : "string",
"regex" : "^(debug|info|warn|error|security)$",
"desc" : "Severity level"
},
"LogTimeStamp" : {
"type" : "string",
"regex" : "^[0-9]{14}(\\.[0-9]+)?$",
"desc" : "Original timestamp in YYYYMMDDhhmmss.frac format"
}
},
"funcs" : {
"msg" : {
"params" : {
"lvl" : {
"type" : "LogLevel"
},
"txt" : {
"type" : "string",
"desc" : "Text message, may include new lines"
},
"ts" : {
"type" : "LogTimeStamp"
}
},
"desc" : "Trivial log message"
},
"hexdump" : {
"params" : {
"lvl" : {
"type" : "LogLevel"
},
"txt" : {
"type" : "string",
"desc" : "Text message, may include new lines"
},
"ts" : {
"type" : "LogTimeStamp"
},
"data" : {
"type" : "string",
"desc" : "Base64 encoded binary data"
}
},
"desc" : "Trivial log message"
}
},
"requires" : [
"AllowAnonymous",
"SecureChannel"
],
"desc" : "Audit Log interface"
}
The raw FutoIn interface is not very handy for writing code and additional feateres are desired.
Without [RAII][] principle (e.g. Java, Python, PHP):
...log().infof( "Message %s", str )
with ...log().infos() as l:
l.write( "Message " )
l.write( str )
With [RAII][] principle (e.g. C++):
...log().infof( "Message %s", str );
...log().infos() << "Message " << str;
=END OF SPEC=