morgan
expressにはmorganというログのライブラリーが標準で用意されています。
実装例
lib/morgan.jsファイルを作成する
const morgan = require('morgan'); const fs = require('fs') const path = require('path') morgan.accessLogStream = fs.createWriteStream(path.join(__dirname, '../logs/access.log'), { flags: 'a' }) module.exports = morgan;
index.jsファイルに下記のように記述する
const morgan = require('./lib/morgan.js') app.use(morgan('combined', { stream: morgan.accessLogStream }))
ログ出力内容 例
::ffff:192.168.128.5 - - [02/May/2020:21:23:23 +0000] "GET /vpn/index.html HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0" ::ffff:192.168.128.5 - - [02/May/2020:22:44:03 +0000] "GET / HTTP/1.0" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" ::ffff:192.168.128.5 - - [02/May/2020:22:44:05 +0000] "GET / HTTP/1.0" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" ::ffff:122.209.124.33 - - [02/May/2020:22:44:10 +0000] "GET / HTTP/1.1" 200 4 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" ::ffff:192.168.128.5 - - [02/May/2020:22:44:13 +0000] "GET / HTTP/1.0" 200 4 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" ::ffff:35.163.121.1 - - [02/May/2020:22:45:05 +0000] "GET / HTTP/1.1" 200 4 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
log4js
以前から利用されており、現在はmorganより人気がありませんが、個人的には好きなので、こちらを利用しております。
実装例
lib/logger.js
const log4js = require('log4js'); log4js.configure({ appenders: { console: { type: 'console', filename: './logs/app.log'}, app: { type: 'dateFile', filename: './logs/app.log' }, }, categories: { default: { appenders: [ 'console','app' ], level: 'ALL' }, } }); module.exports = { access: log4js.connectLogger(log4js.getLogger('app')), app: log4js.getLogger('app') };
index.js
app.use(logger.access); app.get('/api', (req, res) => { logger.app.debug({ name: "test", message: "hello" }); res.send(ads); })
ログ出力内容 例
[2020-05-03T01:06:21.709] [DEBUG] app - { name: 'test', message: 'hello' } [2020-05-03T01:06:21.718] [INFO] app - 122.209.124.33 - - "GET /api HTTP/1.0" 304 - "" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"