MediaTech Logger
The framework aims to facilitate the logging needs of the developers in TV2 Media Technology, as well as creating an uniform logging strategy across Typescript and Javascript projects.
Install & build
The package can be installed by:
$ yarn add @tv2media/logger
To build from source:
$ git clone https://github.com/tv2/mediatech-logger.git
$ cd mediatech-logger
$ yarn && yarn build
Usage - Simple
import { createDefaultLogger } from '@tv2media/logger'
const logger = createDefaultLogger()
logger.info('Server started.')
logger.error('Request failed.')
logger.data(new Error('Some dangerous error!')).error('Request failed.')
Usage - Advanced
import {
Logger,
createDefaultLogger,
ProductionLogger,
StagingLogger,
DevelopmentLogger,
LocalLogger,
Level,
Format,
Vault,
} from '@tv2media/logger'
const logger = new Logger({
level: Level.Info,
format: {
kind: Format.Custom,
format: (log, options) => {
let out = '[' + log.level + ']'
if (options.timestamp) {
out += '[' + new Date().toString() + ']'
}
return out + ' ' + data.message
},
timestamp: true,
depth: 3n,
},
vault: {
kind: Vault.Console,
},
})
logger.data('some-data')
logger.tag('some-tag')
logger.error('Server failed.')
logger.warn('No response from client.')
logger.info('Server started at ip:port')
logger.debug({ ip: '0.0.0.0' })
logger.trace('some trace here')
logger.tag('testing').info('test message')
logger.info('message', { tag: 'testing', otherMeta: 'meta' })
Environment Variables
NODE_ENV
The createDefaultLogger is using the environment variable NODE_ENV to determine which log level and format which will be used. The current setup is the following.
NODE_ENV=production
NODE_ENV=stage | staging
NODE_ENV=develop | development
NODE_ENV=local
NODE_ENV="any other value"
LOG_LEVEL
Setting the environment variable LOG_LEVEL overrides the log level from the NODE_ENV setup, this can come in handy when you need to enable e.g. debugging logs in a production enviorment.
function getLevel(): Level | undefined {
switch (process.env.LOG_LEVEL?.toLowerCase()) {
case 'error': return Level.Error
case 'warn': return Level.Warn
case 'info': return Level.Info
case 'debug': return Level.Debug
case 'trace': return Level.Trace
default: return undefined
}
}