logolite
Version:
Lite Virtual Logger and Writer
124 lines (103 loc) • 4.21 kB
Markdown
# logolite
> Lite Virtual Logger and Writer
## How to use it?
Create a `logger` object:
```javascript
var LogAdapter = require('logolite').LogAdapter;
// connect to a logger instance (winston)
var winston = require('winston');
LogAdapter.connectTo(new winston.Logger({
transports: [
new winston.transports.Console({
level: 'debug',
json: false,
timestamp: true,
colorize: true
})
]
}));
/*
// or a bunyan logger instance instead
var bunyan = require('bunyan');
LogAdapter.connectTo(bunyan.createLogger({
name: 'myApplication',
level: 'debug'
}));
*/
/*
// or a log4js logger instance
var log4js = require('log4js');
var log4jsLogger = log4js.getLogger();
log4jsLogger.level = 'debug';
LogAdapter.connectTo(log4jsLogger);
*/
// create a logger
var logger = LogAdapter.getLogger();
```
Create a LogTracer object and put message and loginfo into it:
```javascript
var LogTracer = require('logolite').LogTracer;
var appTracer = LogTracer.ROOT.branch({
key: 'appId',
value: LogTracer.getLogID()
});
// ... your code here ...
// .has() is an alias of .isEnabledFor() method;
// .add() a map (key/value), .put() a single field (key, value)
logger.has('info') && logger.log('info', appTracer
.add({
message: 'app level logging message',
intValue: 123,
boolValue: true,
objectData: { key1: 'value 1', key2: 'value 2' },
strValue: 'simple string'
})
.put('singleField', 'put a single key/value')
.put('anotherField', 1024)
.toMessage({
tags: ['FOR_TRACKING_ONLY', 'END_OF_FUNCTION'],
text: 'Message - integer ${intValue}, str: ${strValue}!'
}));
// ... your code here ...
// create a child tracer object
var subLevel = appTracer.branch({
key: 'subLevel',
value: LogTracer.getLogID()
});
logger.has('debug') && logger.log('debug', subLevel
.add({
name: 'Foo',
percent: 51
})
.toMessage({
text: '${percent}% completed...'
}));
logger.has('debug') && logger.log('debug', subLevel
.add({
name: 'Foo',
percent: 100
})
.toMessage({
text: '${percent}% completed. The task "${name}" has done.'
}));
// ... your code here ...
```
## Environment variables
* `LOGOLITE_INSTANCE_ID`: (UUID string) predefined instance ID;
* `LOGOLITE_INFO_MESSAGE`: (string) Value of `message` field in libraryInfo logging object (default: "Application Information");
* `LOGOLITE_DEFAULT_SECTOR`: (string) default sector name for `debug` module (default: logolite-default, to display this sector: `DEBUG`=`logolite*,other*`);
* `LOGOLITE_ALWAYS_ENABLED`: (string) the list of levels that are always enabled (default: none, "all" for all);
* `LOGOLITE_AUTO_DETECT_FOR`: ("bunyan"|"winston") detects for default `bunyan` or `winston` logging engine (default: none);
* `LOGOLITE_DEBUGLOG_ENABLED`: (true/false) forces using `debug` module to render logging message (default: false);
* `LOGOLITE_DEBUGLOG_GREEDY`: (string) the name for debug logging levels is forwarded to console (default: `conlog`);
* `LOGOLITE_TAGS_EMBEDDABLE`: (true/false) enable/disable to embed `tags` array to output message (default: true);
* `LOGOLITE_TAGS_FIELD_NAME`: (string) field name of embedded tags array in output log object (default: "_tags_");
* `LOGOLITE_TEXT_EMBEDDABLE`: (true/false) enable/disable to embed formatted message to output log object (default: true);
* `LOGOLITE_TEXT_FIELD_NAME`: (string) field name of formatted message string in output log object (default: "_text_");
* `LOGOLITE_TEMPLATE_APPLIED`: (true/false) enable/disable format logging object by template string (default: true);
* `LOGOLITE_FORMAT_NOT_FOUND_VALUE`: (string) value returned when a placeholder in template is not found (default: not_found_value);
* `LOGOLITE_INTERCEPTOR_ENABLED`: (true/false) enable/disable interception mode (default: true);
* `LOGOLITE_STRINGIFY_DISABLED`: (true/false) turns off stringify logging message when call toMessage() method (default: false);
* `LOGOLITE_STRINGIFY_FAILED_VALUE`: (string) value returned when stringify() is failed (default: stringify_failed);
* `LOGOLITE_STRINGIFY_PROTECTED`: (true/false) run JSON.stringify() inside try...catch block (default: true);
* `LOGOLITE_BASE64_UUID`: (true/false) enable/disable base64 UUID format (default: false);