57 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const winston = require('winston');
 | |
| const httpContext = require("express-http-context");
 | |
| 
 | |
| const logLevel = 'trace';
 | |
| 
 | |
| const customLevels = {
 | |
|   levels: {
 | |
|     fatal: 0,
 | |
|     error: 1,
 | |
|     warning: 2,
 | |
|     info: 3,
 | |
|     debug: 4,
 | |
|     trace: 5
 | |
|   },
 | |
|   colors: {
 | |
|     trace: 'blue',
 | |
|     debug: 'white',
 | |
|     info: 'green',
 | |
|     warning: 'yellow',
 | |
|     error: 'red',
 | |
|     fatal: 'red'
 | |
|   }
 | |
| };
 | |
| 
 | |
| const appendSessionId = winston.format(info => {
 | |
|   info.sessionId = httpContext.get("sessionId");
 | |
|   return info
 | |
| });
 | |
| 
 | |
| 
 | |
| const logger = winston.createLogger({
 | |
|   level: logLevel,
 | |
|   levels: customLevels.levels,
 | |
|   transports: [
 | |
|     new winston.transports.File({
 | |
|       filename: `${__base}/logs/all-logs.log`,
 | |
|       format: winston.format.combine(
 | |
|         appendSessionId(),
 | |
|         winston.format.json()
 | |
|       )
 | |
|     })
 | |
|   ]
 | |
| });
 | |
| 
 | |
| winston.addColors(customLevels.colors);
 | |
| 
 | |
| if (process.env.NODE_ENV !== 'production') {
 | |
| 
 | |
|   logger.add(new winston.transports.Console({
 | |
|     format: winston.format.combine(
 | |
|       winston.format.colorize(),
 | |
|       winston.format.simple()
 | |
|     )
 | |
|   }));
 | |
| };
 | |
| 
 | |
| module.exports = logger; |