During the upgrade of winston in
c3584770f24205d84b9399abd9535cb27dc7b00c a the class extension for
streaming was removed.
This caused silent crashes. Somehow winston simply called
`process.exit(1)` whenever `logger.write()` was called. This is really
bad and only easy to debug because of the testing right after upgrading.
However, reimplementing the stream interface as it was, didn't work, due
to the fact that `logger.write()` is already implemented and causes the
mentioned problem. So we extent the object with an `stream` object that
implements `write()` for streams and pass that to morgan.
So this patch fixes unexpected exiting for streaming towards our logging
module.
References:
https://www.digitalocean.com/community/tutorials/how-to-use-winston-to-log-node-js-applications
c3584770f2
https://stackoverflow.com/a/28824464
Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
		
	
			
		
			
				
	
	
		
			28 lines
		
	
	
		
			547 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			547 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict'
 | |
| const {createLogger, format, transports} = require('winston')
 | |
| 
 | |
| const logger = createLogger({
 | |
|   level: 'debug',
 | |
|   format: format.combine(
 | |
|     format.uncolorize(),
 | |
|     format.timestamp(),
 | |
|     format.align(),
 | |
|     format.splat(),
 | |
|     format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
 | |
|   ),
 | |
|   transports: [
 | |
|     new transports.Console({
 | |
|       handleExceptions: true
 | |
|     })
 | |
|   ],
 | |
|   exitOnError: false
 | |
| })
 | |
| 
 | |
| logger.stream = {
 | |
|   write: function (message, encoding) {
 | |
|     logger.info(message)
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = logger
 |