sd-log

a logger for nodejs environment based on winston

Usage no npm install needed!

<script type="module">
  import sdLog from 'https://cdn.skypack.dev/sd-log';
</script>

README

sd-log

a logger for nodejs environment based on winston

Installation

$ npm install sd-log -S

or

$ yarn add sd-log

In Node.js:

const mainLogger = require('sd-log')()
const logger = mainLogger.logger
const accessLogger = mainLogger.accessLogger

logger.debug('test debug log')
logger.info('test info log')
logger.notice('test notice log')
logger.warn('test warning log')
logger.error('test error log')

accessLogger.access('test access log', {request_ts: Date.now()})

Log hook

const hookFunc = () => { console.log('invoke log hook!') }
// default log hook is () => {}
const logger = require('./index.js')(hookFunc)

Log file directory and rotate mode

const logDir = './logs/' // default log file directory is './'
const logger = require('./index.js')(()=>{}, logDir, 'hourly')

Log file types

Sd-log supports a total of three types of log files

  1. access log (only inclues access log)
  2. info log (Store all log information except access)
  3. error log

By default, sd-log creates a log folder dedicated to the current service process based on the pid of the current service process to store the above three logs. The product environment directory structure will roughly look like this:

your_log_dir
--pid_1236_2018_01_01
----access-2018-01-01-23.log
----info-2018-01-01-23.log
----error-2018-01-01-23.log
--pid_1237_2018_01_01
----access-2018-01-01-23.log
----info-2018-01-01-23.log
----error-2018-01-01-23.log
--pid_1238_2018_01_01
----access-2018-01-01-23.log
----info-2018-01-01-23.log
----error-2018-01-01-23.log

Log splitting:

every type of log file rotate by every hour

  1. access log, split once every 1GB
  2. info log, do a split every 500MB
  3. error log, do a split every 500MB