Skip to content

Commit

Permalink
Replace bunyan with more stable, zero-dependency logger.
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewSouthpaw committed Sep 18, 2021
1 parent 8af0e4c commit 5624306
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 55 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"Jonas Holtkamp <jonas.holtkamp@senacor.com>"
],
"dependencies": {
"bunyan": "^1.8.12",
"diary": "^0.2.2",
"expect": "^24.8.0"
},
"devDependencies": {
Expand Down
8 changes: 2 additions & 6 deletions src/log.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
const bunyan = require('bunyan')
const logger = require('diary')
const packagejson = require('../package.json')
const assert = require('assert')

const newLogger = name => {
assert(name, 'Name must be defined')
return bunyan.createLogger({
name: name,
app: packagejson.name,
src: process.env.NODE_ENV === 'development'
})
return logger.diary(`${packagejson.name}: ${name}`)
}

module.exports = newLogger
62 changes: 14 additions & 48 deletions src/log.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const log = require('./log')
const packagejson = require('../package.json')
const { objectContaining } = expect
const { enable } = require('diary')

enable('*')

describe('the logger', () => {
it('should create new loggers', () => {
Expand All @@ -9,59 +10,24 @@ describe('the logger', () => {
expect(logger.info).toBeDefined()
})

it('should use the package json name as the logger app', () => {
const logger = log('name')

expect(logger.fields.app).toBe(packagejson.name)
})

it('should use the name as the loggers name', () => {
const name = 'some name'

const logger = log(name)

expect(logger.fields.name).toBe(name)
})

it('should fail if no name is passed', () => {
expect(() => log()).toThrow()
})

describe('should set "src" to the correct value', () => {
let mockCreateLogger, log
describe('when capture info output', () => {
const originalInfo = console.info

beforeEach(() => {
mockCreateLogger = jest.fn()
jest.mock('bunyan', () => ({
createLogger: mockCreateLogger
}))

log = require('./log')
console.info = jest.fn()
})

afterEach(() => {
jest.resetModules()
jest.resetAllMocks()
console.info = originalInfo
})

it('should set "src" to true if the stage is development', () => {
const originalValue = process.env.NODE_ENV
process.env.NODE_ENV = 'development'

log('name')

process.env.NODE_ENV = originalValue
expect(mockCreateLogger).toBeCalledWith(objectContaining({ src: true }))
it('should use the package json name and logger name in the scope', () => {
const logger = log('name')
logger.info('hello world')
expect(console.info).toHaveBeenCalledWith('ℹ info [jest-when: name] hello world')
})
})

it('should set "src" to false if the stage is NOT development', () => {
const originalValue = process.env.NODE_ENV
process.env.NODE_ENV = 'some other stage'

log('name')

process.env.NODE_ENV = originalValue
expect(mockCreateLogger).toBeCalledWith(objectContaining({ src: false }))
})
it('should fail if no name is passed', () => {
expect(() => log()).toThrow()
})
})

0 comments on commit 5624306

Please sign in to comment.