Skip to content

Commit

Permalink
chore: Updated to pino 7. (#172)
Browse files Browse the repository at this point in the history
* chore: Updated to pino 7.

* fix: Added get-caller-file.
  • Loading branch information
ShogunPanda authored Nov 3, 2021
1 parent e89c793 commit 5f2034f
Show file tree
Hide file tree
Showing 11 changed files with 204 additions and 181 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node: [10, 12, 13, 14, 16]
node: [12, 14, 16, 17]
name: Node ${{ matrix.node }}
steps:
- uses: actions/[email protected]
Expand Down
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ npm i pino-http --save
```js
'use strict'

var http = require('http')
var server = http.createServer(handle)
const http = require('http')
const server = http.createServer(handle)

var logger = require('pino-http')()
const logger = require('pino-http')()

function handle (req, res) {
logger(req, res)
Expand Down Expand Up @@ -118,10 +118,10 @@ $ node example.js | pino-pretty
```js
'use strict'

var http = require('http')
var server = http.createServer(handle)
var pino = require('pino')
var logger = require('pino-http')({
const http = require('http')
const server = http.createServer(handle)
const pino = require('pino')
const logger = require('pino-http')({
// Reuse an existing logger instance
logger: pino(),

Expand Down Expand Up @@ -198,7 +198,7 @@ if no `opts.logger` is passed. It can be used, for example, for doing most of th
to do with any `pino` instance, for example changing logging level in runtime, like so:

```js
var pinoHttp = require('pinoHttp')();
const pinoHttp = require('pinoHttp')();
pinoHttp.logger.level = 'silent';
```

Expand All @@ -212,9 +212,9 @@ processing that happens before a response is logged. This can be corrected by ma
the start time to the `res` object with the `pinoHttp.startTime` symbol, like so:

```js
var http = require('http')
var logger = require('pino-http')()
var someImportantThingThatHasToBeFirst = require('some-important-thing')
const http = require('http')
const logger = require('pino-http')()
const someImportantThingThatHasToBeFirst = require('some-important-thing')
http.createServer((req, res) => {
res[logger.startTime] = Date.now()
someImportantThingThatHasToBeFirst(req, res)
Expand Down Expand Up @@ -285,7 +285,7 @@ by `foo`. In order to show these properties, along with the standard serialized
properties, in the resulting logs, we can supply a serializer like:

```js
var logger = require('pino-http')({
const logger = require('pino-http')({
serializers: {
req (req) {
Object.keys(req.raw).forEach((k) => {
Expand All @@ -304,7 +304,7 @@ serializers already defined by `opts.logger`, you can pass in `opts.wrapSerializ
as `false`:

```js
var logger = require('pino-http')({
const logger = require('pino-http')({
wrapSerializers: false,
serializers: {
req (req) {
Expand Down
12 changes: 6 additions & 6 deletions benchmarks/http-ndjson-equivalent-server.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
'use strict'

var http = require('http')
var httpNdjson = require('http-ndjson')
var server = http.createServer(handle)
const http = require('http')
const httpNdjson = require('http-ndjson')
const server = http.createServer(handle)

var pid = process.pid
var hostname = require('os').hostname()
const pid = process.pid
const hostname = require('os').hostname()

function handle (req, res) {
res.end('hello world')
var opts = {
const opts = {
pid: pid,
hostname: hostname,
level: 30,
Expand Down
6 changes: 3 additions & 3 deletions benchmarks/http-ndjson-minimal-server.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use strict'

var http = require('http')
var httpNdjson = require('http-ndjson')
var server = http.createServer(handle)
const http = require('http')
const httpNdjson = require('http-ndjson')
const server = http.createServer(handle)

function handle (req, res) {
res.end('hello world')
Expand Down
4 changes: 2 additions & 2 deletions benchmarks/no-log-server.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

var http = require('http')
var server = http.createServer(handle)
const http = require('http')
const server = http.createServer(handle)

function handle (req, res) {
res.end('hello world')
Expand Down
6 changes: 3 additions & 3 deletions benchmarks/pino-extreme-server.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict'

var http = require('http')
var server = http.createServer(handle)
const http = require('http')
const server = http.createServer(handle)

var logger = require('../')({
const logger = require('../')({
extreme: true
})

Expand Down
6 changes: 3 additions & 3 deletions benchmarks/pino-server.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict'

var http = require('http')
var server = http.createServer(handle)
const http = require('http')
const server = http.createServer(handle)

var logger = require('../')()
const logger = require('../')()

function handle (req, res) {
logger(req, res)
Expand Down
6 changes: 3 additions & 3 deletions example.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict'

var http = require('http')
var server = http.createServer(handle)
const http = require('http')
const server = http.createServer(handle)

var logger = require('./')()
const logger = require('./')()

function handle (req, res) {
logger(req, res)
Expand Down
83 changes: 44 additions & 39 deletions logger.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
'use strict'

var pino = require('pino')
var serializers = require('pino-std-serializers')
var URL = require('fast-url-parser')
var startTime = Symbol('startTime')
const pino = require('pino')
const serializers = require('pino-std-serializers')
const getCallerFile = require('get-caller-file')
const URL = require('fast-url-parser')
const startTime = Symbol('startTime')

function pinoLogger (opts, stream) {
if (opts && opts._writableState) {
Expand All @@ -14,21 +15,21 @@ function pinoLogger (opts, stream) {
opts = Object.assign({}, opts)

opts.customAttributeKeys = opts.customAttributeKeys || {}
var reqKey = opts.customAttributeKeys.req || 'req'
var resKey = opts.customAttributeKeys.res || 'res'
var errKey = opts.customAttributeKeys.err || 'err'
var requestIdKey = opts.customAttributeKeys.reqId || 'reqId'
var responseTimeKey = opts.customAttributeKeys.responseTime || 'responseTime'
const reqKey = opts.customAttributeKeys.req || 'req'
const resKey = opts.customAttributeKeys.res || 'res'
const errKey = opts.customAttributeKeys.err || 'err'
const requestIdKey = opts.customAttributeKeys.reqId || 'reqId'
const responseTimeKey = opts.customAttributeKeys.responseTime || 'responseTime'
delete opts.customAttributeKeys

var customProps = opts.customProps || opts.reqCustomProps || {}
const customProps = opts.customProps || opts.reqCustomProps || {}

opts.wrapSerializers = 'wrapSerializers' in opts ? opts.wrapSerializers : true
if (opts.wrapSerializers) {
opts.serializers = Object.assign({}, opts.serializers)
var requestSerializer = opts.serializers[reqKey] || opts.serializers.req || serializers.req
var responseSerializer = opts.serializers[resKey] || opts.serializers.res || serializers.res
var errorSerializer = opts.serializers[errKey] || opts.serializers.err || serializers.err
const requestSerializer = opts.serializers[reqKey] || opts.serializers.req || serializers.req
const responseSerializer = opts.serializers[resKey] || opts.serializers.res || serializers.res
const errorSerializer = opts.serializers[errKey] || opts.serializers.err || serializers.err
opts.serializers[reqKey] = serializers.wrapRequestSerializer(requestSerializer)
opts.serializers[resKey] = serializers.wrapResponseSerializer(responseSerializer)
opts.serializers[errKey] = serializers.wrapErrorSerializer(errorSerializer)
Expand All @@ -39,42 +40,42 @@ function pinoLogger (opts, stream) {
throw new Error("You can't pass 'useLevel' and 'customLogLevel' together")
}

var useLevel = opts.useLevel || 'info'
var customLogLevel = opts.customLogLevel
const useLevel = opts.useLevel || 'info'
const customLogLevel = opts.customLogLevel
delete opts.useLevel
delete opts.customLogLevel

var theStream = opts.stream || stream
const theStream = opts.stream || stream
delete opts.stream

var autoLogging = (opts.autoLogging !== false)
var autoLoggingIgnore = opts.autoLogging && opts.autoLogging.ignore ? opts.autoLogging.ignore : null
var autoLoggingIgnorePaths = (opts.autoLogging && opts.autoLogging.ignorePaths) ? opts.autoLogging.ignorePaths : []
var autoLoggingGetPath = opts.autoLogging && opts.autoLogging.getPath ? opts.autoLogging.getPath : null
const autoLogging = (opts.autoLogging !== false)
const autoLoggingIgnore = opts.autoLogging && opts.autoLogging.ignore ? opts.autoLogging.ignore : null
const autoLoggingIgnorePaths = (opts.autoLogging && opts.autoLogging.ignorePaths) ? opts.autoLogging.ignorePaths : []
const autoLoggingGetPath = opts.autoLogging && opts.autoLogging.getPath ? opts.autoLogging.getPath : null
delete opts.autoLogging

var successMessage = opts.customSuccessMessage || function () { return 'request completed' }
var errorMessage = opts.customErrorMessage || function () { return 'request errored' }
const successMessage = opts.customSuccessMessage || function () { return 'request completed' }
const errorMessage = opts.customErrorMessage || function () { return 'request errored' }
delete opts.customSuccessfulMessage
delete opts.customErroredMessage

var quietReqLogger = !!opts.quietReqLogger
const quietReqLogger = !!opts.quietReqLogger

var logger = wrapChild(opts, theStream)
var genReqId = reqIdGenFactory(opts.genReqId)
const logger = wrapChild(opts, theStream)
const genReqId = reqIdGenFactory(opts.genReqId)
loggingMiddleware.logger = logger
return loggingMiddleware

function onResFinished (err) {
this.removeListener('error', onResFinished)
this.removeListener('finish', onResFinished)

var log = this.log
var responseTime = Date.now() - this[startTime]
var level = customLogLevel ? customLogLevel(this, err) : useLevel
const log = this.log
const responseTime = Date.now() - this[startTime]
const level = customLogLevel ? customLogLevel(this, err) : useLevel

if (err || this.err || this.statusCode >= 500) {
var error = err || this.err || new Error('failed with status code ' + this.statusCode)
const error = err || this.err || new Error('failed with status code ' + this.statusCode)

log[level]({
[resKey]: this,
Expand All @@ -91,14 +92,14 @@ function pinoLogger (opts, stream) {
}

function loggingMiddleware (req, res, next) {
var shouldLogSuccess = true
let shouldLogSuccess = true

req.id = genReqId(req)

var log = quietReqLogger ? logger.child({ [requestIdKey]: req.id }) : logger
const log = quietReqLogger ? logger.child({ [requestIdKey]: req.id }) : logger

var fullReqLogger = log.child({ [reqKey]: req })
var customPropBindings = (typeof customProps === 'function') ? customProps(req, res) : customProps
let fullReqLogger = log.child({ [reqKey]: req })
const customPropBindings = (typeof customProps === 'function') ? customProps(req, res) : customProps
fullReqLogger = fullReqLogger.child(customPropBindings)

res.log = fullReqLogger
Expand All @@ -108,7 +109,7 @@ function pinoLogger (opts, stream) {

if (autoLogging) {
if (autoLoggingIgnorePaths.length) {
var url
let url
if (autoLoggingGetPath) {
url = URL.parse(autoLoggingGetPath(req))
} else {
Expand Down Expand Up @@ -145,9 +146,9 @@ function pinoLogger (opts, stream) {
}

function wrapChild (opts, stream) {
var prevLogger = opts.logger
var prevGenReqId = opts.genReqId
var logger = null
const prevLogger = opts.logger
const prevGenReqId = opts.genReqId
let logger = null

if (prevLogger) {
opts.logger = undefined
Expand All @@ -156,6 +157,10 @@ function wrapChild (opts, stream) {
opts.logger = prevLogger
opts.genReqId = prevGenReqId
} else {
if (opts.transport && !opts.transport.caller) {
opts.transport.caller = getCallerFile()
}

logger = pino(opts, stream)
}

Expand All @@ -164,8 +169,8 @@ function wrapChild (opts, stream) {

function reqIdGenFactory (func) {
if (typeof func === 'function') return func
var maxInt = 2147483647
var nextReqId = 0
const maxInt = 2147483647
let nextReqId = 0
return function genReqId (req) {
return req.id || (nextReqId = (nextReqId + 1) & maxInt)
}
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"main": "logger.js",
"dependencies": {
"fast-url-parser": "^1.1.3",
"pino": "^6.13.0",
"get-caller-file": "^2.0.5",
"pino": "^7.0.5",
"pino-std-serializers": "^4.0.0"
},
"devDependencies": {
Expand Down
Loading

0 comments on commit 5f2034f

Please sign in to comment.