|
1 | 1 | import fs from 'fs'; |
2 | 2 | import DailyRotateFile from 'winston-daily-rotate-file'; |
3 | | -import { createLogger, format, transports } from 'winston'; |
| 3 | +import { createLogger, format, transports, Logger } from 'winston'; |
4 | 4 |
|
5 | 5 | import context from './context'; |
6 | 6 | import app from '../config/config'; |
@@ -29,29 +29,43 @@ const formatter = printf((info: any) => { |
29 | 29 | return `[ ${ts} ] [ ${transactionId} ] - [ ${level} ] ${message} ${meta}`; |
30 | 30 | }); |
31 | 31 |
|
32 | | -if (!fs.existsSync('logs')) { |
33 | | - fs.mkdirSync('logs'); |
34 | | -} |
35 | | - |
36 | 32 | let trans: any = []; |
| 33 | +let logger: Logger; |
37 | 34 |
|
38 | | -if (environment === 'development') { |
39 | | - trans = [new transports.Console()]; |
40 | | -} |
| 35 | +/* |
| 36 | + Send logs to console if log file generation is not supported. |
| 37 | + Heroku is an example cloud service provider that uses plug-ins to monitor logs |
| 38 | + and logs are sent to console. Accessing the log files generated by the app poses a difficult task. |
| 39 | + */ |
| 40 | +if (logging.logFileGenarationSupport === 'false') { |
| 41 | + logger = createLogger({ |
| 42 | + level: logging.level, |
| 43 | + format: combine(splat(), colorize(), timestamp(), formatter), |
| 44 | + transports: [new transports.Console()] |
| 45 | + }); |
| 46 | +} else { |
| 47 | + if (!fs.existsSync('logs')) { |
| 48 | + fs.mkdirSync('logs'); |
| 49 | + } |
41 | 50 |
|
42 | | -const logger = createLogger({ |
43 | | - level: logging.level, |
44 | | - format: combine(splat(), colorize(), timestamp(), formatter), |
45 | | - transports: [ |
46 | | - ...trans, |
47 | | - new DailyRotateFile({ |
48 | | - maxSize: logging.maxSize, |
49 | | - maxFiles: logging.maxFiles, |
50 | | - datePattern: logging.datePattern, |
51 | | - zippedArchive: true, |
52 | | - filename: `logs/${logging.level}-%DATE%.log` |
53 | | - }) |
54 | | - ] |
55 | | -}); |
| 51 | + if (environment === 'development') { |
| 52 | + trans = [new transports.Console()]; |
| 53 | + } |
| 54 | + |
| 55 | + logger = createLogger({ |
| 56 | + level: logging.level, |
| 57 | + format: combine(splat(), colorize(), timestamp(), formatter), |
| 58 | + transports: [ |
| 59 | + ...trans, |
| 60 | + new DailyRotateFile({ |
| 61 | + maxSize: logging.maxSize, |
| 62 | + maxFiles: logging.maxFiles, |
| 63 | + datePattern: logging.datePattern, |
| 64 | + zippedArchive: true, |
| 65 | + filename: `logs/${logging.level}-%DATE%.log` |
| 66 | + }) |
| 67 | + ] |
| 68 | + }); |
| 69 | +} |
56 | 70 |
|
57 | 71 | export default logger; |
0 commit comments