Advertisement
Guest User

Untitled

a guest
May 26th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. 'use strict';
  2. const { createLogger, format, transports } = require('winston');
  3. require('winston-daily-rotate-file');
  4. const fs = require('fs');
  5. const path = require('path');
  6. const os = require('os');
  7. const env = process.env.NODE_ENV || 'development';
  8. const logDir = __dirname+ '/verbose';
  9.  
  10. // Create the log directory if it does not exist
  11. if (!fs.existsSync(logDir)) {
  12. fs.mkdirSync(logDir);
  13. }
  14.  
  15. const dailyRotateFileTransport = new transports.DailyRotateFile({
  16. filename: `${logDir}/%DATE%-charcoal-eats.log`,
  17. datePattern: 'YYYY-MM-DD',
  18. zippedArchive: true,
  19. maxSize: '500m',
  20. maxFiles: '10d',
  21. format: format.combine(format.json())
  22. });
  23.  
  24. var errorMeta = {
  25. hostname: os.hostname(),
  26. pid: process.pid,
  27. memory: process.memoryUsage(),
  28. uptime: process.uptime(),
  29. env: process.env.NODE_ENV || 'development',
  30. filename: path.basename(process.mainModule.filename)
  31. };
  32.  
  33. const logger = createLogger({
  34. // change level if in dev environment versus production
  35. level: env === 'development' ? 'debug' : 'info',
  36. format: format.combine(
  37. format.errors({ stack: true }),
  38. format.label({ label: errorMeta }),
  39. format.timestamp({
  40. format: 'YYYY-MM-DD HH:mm:ss'
  41. }),
  42. format.json()
  43. ),
  44. transports: [
  45. new transports.Console({
  46. level: 'info',
  47. format: format.combine(
  48. format.colorize(),
  49. format.printf(
  50. info =>
  51. `${info.timestamp} ${info.level} ${info.label.env} [${info.label.filename}]: ${JSON.stringify(info.message)} `
  52. )
  53. ),
  54. handleExceptions: true
  55. }),
  56. dailyRotateFileTransport
  57. ]
  58. });
  59.  
  60. logger.exitOnError = false;
  61.  
  62. function argumentsToString(v){
  63. // convert arguments object to real array
  64. var args = Array.prototype.slice.call(v);
  65. var message = args[0] ? args[0] : '';
  66. var meta = [];
  67. if(args.length > 1){
  68. for(let i=1; i< args.length; i++){
  69. if (typeof args[i] === "object"){
  70. meta.push(JSON.stringify(args[i]));
  71. }
  72. }
  73. }
  74. var str = { message: message, meta: meta.join(' ') };
  75. return str;
  76. }
  77.  
  78.  
  79. logger.info = function(){
  80. logger.log.apply(logger, ["info", argumentsToString(arguments)]);
  81. }
  82. logger.warn = function(){
  83. logger.log.apply(logger, ["warn", argumentsToString(arguments)]);
  84. }
  85. logger.error = function(){
  86. logger.log.apply(logger, ["error", argumentsToString(arguments)]);
  87. }
  88. logger.debug = function(){
  89. logger.log.apply(logger, ["debug", argumentsToString(arguments)]);
  90. }
  91. logger.verbose = function(){
  92. logger.log.apply(logger, ["verbose", argumentsToString(arguments)]);
  93. }
  94.  
  95. module.exports = logger;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement