| 
									
										
										
										
											2017-08-05 20:25:57 +02:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Logger. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const pino = require('pino'); | 
					
						
							| 
									
										
										
										
											2018-02-27 09:08:31 +01:00
										 |  |  | const _ = require('lodash'); | 
					
						
							| 
									
										
										
										
											2017-08-05 20:25:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 09:08:31 +01:00
										 |  |  | const logLevels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace']; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function getLogLevel() { | 
					
						
							|  |  |  |   if (_.isString(process.env.STRAPI_LOG_LEVEL) && _.includes(logLevels, process.env.STRAPI_LOG_LEVEL.toLowerCase())) { | 
					
						
							|  |  |  |     return process.env.STRAPI_LOG_LEVEL; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-03-01 13:36:54 +01:00
										 |  |  |   return 'debug'; | 
					
						
							| 
									
										
										
										
											2018-02-27 09:08:31 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function getBool(envVar, defaultValue) { | 
					
						
							|  |  |  |   if (_.isBoolean(envVar)) return envVar; | 
					
						
							|  |  |  |   if (_.isString(envVar)) { | 
					
						
							|  |  |  |     if (envVar === 'true') return true; | 
					
						
							|  |  |  |     if (envVar === 'false') return false; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   return defaultValue; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const loggerConfig = { | 
					
						
							|  |  |  |   level: getLogLevel(), | 
					
						
							|  |  |  |   timestamp: getBool(process.env.STRAPI_LOG_TIMESTAMP, false), | 
					
						
							| 
									
										
										
										
											2018-03-06 16:51:00 +01:00
										 |  |  |   // prettyPrint: getBool(process.env.STRAPI_LOG_PRETTY_PRINT, true),
 | 
					
						
							|  |  |  |   forceColor: getBool(process.env.STRAPI_LOG_FORCE_COLOR, true) | 
					
						
							| 
									
										
										
										
											2018-02-27 09:08:31 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 16:51:00 +01:00
										 |  |  | const pretty = pino.pretty({ | 
					
						
							|  |  |  |   formatter: (logs, options) => { | 
					
						
							| 
									
										
										
										
											2018-03-07 13:12:25 +01:00
										 |  |  |     return `${options.asColoredText({ level: 10 }, `[${new Date().toISOString()}]`)} ${options.prefix.toLowerCase()} ${logs.msg}`; | 
					
						
							| 
									
										
										
										
											2018-03-06 16:51:00 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pretty.pipe(process.stdout); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const logger = getBool(process.env.STRAPI_LOG_PRETTY_PRINT, true) ? | 
					
						
							|  |  |  |   pino(loggerConfig, pretty): | 
					
						
							|  |  |  |   pino(loggerConfig); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = logger; |