import * as log4js from './log4js'; log4js.configure('./filename'); const logger1 = log4js.getLogger(); logger1.level = 'debug'; logger1.debug("Some debug messages"); logger1.fatal({ whatever: 'foo' }) const logger3 = log4js.getLogger('cheese'); logger3.trace('Entering cheese testing'); logger3.debug('Got cheese.'); logger3.info('Cheese is Gouda.'); logger3.warn('Cheese is quite smelly.'); logger3.error('Cheese is too ripe!'); logger3.fatal('Cheese was breeding ground for listeria.'); log4js.configure({ appenders: { cheese: { type: 'console', filename: 'cheese.log' } }, categories: { default: { appenders: ['cheese'], level: 'error' } } }); log4js.configure({ appenders: { out: { type: 'file', filename: 'pm2logs.log' } }, categories: { default: { appenders: ['out'], level: 'info' } }, pm2: true, pm2InstanceVar: 'INSTANCE_ID' }); log4js.addLayout('json', config => function (logEvent) { return JSON.stringify(logEvent) + config.separator; }); log4js.configure({ appenders: { out: { type: 'stdout', layout: { type: 'json', separator: ',' } } }, categories: { default: { appenders: ['out'], level: 'info' } } }); log4js.configure({ appenders: { file: { type: 'dateFile', filename: 'thing.log', pattern: '.mm' } }, categories: { default: { appenders: ['file'], level: 'debug' } } }); const logger4 = log4js.getLogger('thing'); logger4.log('logging a thing'); const logger5 = log4js.getLogger('json-test'); logger5.info('this is just a test'); logger5.error('of a custom appender'); logger5.warn('that outputs json'); log4js.shutdown(() => { }); log4js.configure({ appenders: { cheeseLogs: { type: 'file', filename: 'cheese.log' }, console: { type: 'console' } }, categories: { cheese: { appenders: ['cheeseLogs'], level: 'error' }, another: { appenders: ['console'], level: 'trace' }, default: { appenders: ['console', 'cheeseLogs'], level: 'trace' } } }); const logger6 = log4js.getLogger('cheese'); // only errors and above get logged. const otherLogger = log4js.getLogger(); // this will get coloured output on console, and appear in cheese.log otherLogger.error('AAArgh! Something went wrong', { some: 'otherObject', useful_for: 'debug purposes' }); otherLogger.log('This should appear as info output'); // these will not appear (logging level beneath error) logger6.trace('Entering cheese testing'); logger6.debug('Got cheese.'); logger6.info('Cheese is Gouda.'); logger6.log('Something funny about cheese.'); logger6.warn('Cheese is quite smelly.'); // these end up only in cheese.log logger6.error('Cheese %s is too ripe!', 'gouda'); logger6.fatal('Cheese was breeding ground for listeria.'); // these don't end up in cheese.log, but will appear on the console const anotherLogger = log4js.getLogger('another'); anotherLogger.debug('Just checking'); // will also go to console and cheese.log, since that's configured for all categories const pantsLog = log4js.getLogger('pants'); pantsLog.debug('Something for pants'); import { configure, getLogger } from './log4js'; configure('./filename'); const logger2 = getLogger(); logger2.level = 'debug'; logger2.debug("Some debug messages"); configure({ appenders: { cheese: { type: 'file', filename: 'cheese.log' } }, categories: { default: { appenders: ['cheese'], level: 'error' } } }); log4js.configure('./filename').getLogger(); const logger7 = log4js.getLogger(); logger7.level = 'debug'; logger7.debug("Some debug messages"); const levels: log4js.Levels = log4js.levels; const level: log4js.Level = levels.getLevel('info'); log4js.connectLogger(logger1, { format: ':x, :y', level: 'info', context: true }); log4js.connectLogger(logger2, { format: (req, _res, format) => format(`:remote-addr - ${req.id} - ":method :url HTTP/:http-version" :status :content-length ":referrer" ":user-agent"`) }); //support for passing in an appender module log4js.configure({ appenders: { thing: { type: { configure: () => {} }}}, categories: { default: { appenders: ['thing'], level: 'debug'}} });