Logging with the JS7 Logger
JS7 - JavaScript Jobs can use the JS7 Logger like this:
class JS7Job extends js7.Job { processOrder(js7Step) { js7Step.getLogger().info('logging some information'); js7Step.getLogger().warn('.. logging some warning'); js7Step.getLogger().error('.. logging some error'); js7Step.getLogger().debug('.. logging some debug output'); // do some stuff } }
Explanation:
- The
js7Step.getLogger()
object is provided that offers related methods for logging. - By default output of
info()
,warn()
anddebug()
methods is written to the stdout channel, output byerror()
is written to stderr.- The argument
log_level
can be used for a job to specify the log level:log_level = info
: default, no debug output enabled.log_level = debug
: includes debug output
- For details see JS7 - JITL Common Variables.
- The argument
- For details see JS7 - Job API.
Logging with the JavaScript Console Logger
Basically the JavaScript methods print(), console.log()
, console.info()
, console.warn()
etc. methods cannot be used as they directly address the stdout channel. As a result use of the methods writes output to the JS7 Agent's stdout channel and to its ./logs/watchdog.log
file.
It is an option to override the above logging methods and to map them to js7Step.getLogger()
methods like this:
(function(){ print = function() { js7Step.getLogger().info(arguments[0]); } console.log = function() { js7Step.getLogger().info(arguments[0]); } console.info = function() { js7Step.getLogger().info(arguments[0]); } console.warn = function() { js7Step.getLogger().warn(arguments[0]); } console.error = function() { js7Step.getLogger().error(arguments[0]); } console.debug = function() { js7Step.getLogger().debug(arguments[0]); } })();
To make the override globally available users can add it to a JS7 - Script Include.
- Download sample files (or copy from above examples):
- Download override of Console Logger from Script Include (upload .json): JavaScript-Logging.includescript.json
- Download the workflow (upload .json): pdJavaScriptLogging.workflow.json
- In the Configuration->Inventory view the override is configured like this:
The Script Include can be referenced from a job using the syntax: //!include <name-of-script-include>
As a result jobs can use the JavaScript Console Logger as usually:
class JS7Job extends js7.Job { processOrder(js7Step) { //!include JavaScript-Logging print('.. printing some information'); console.info('.. logging some information'); console.log('.. logging some information'); console.warn('.. logging some warning'); console.error('.. logging some error'); console.debug('.. logging some debug output'); // do some stuff } }