Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. const R = require('ramda'), // 0.26.1
  2. winston = require('winston'); // 2.4.x
  3.  
  4. const winstonConf = {
  5. transports : [
  6. {
  7. transportType : 'console'
  8. }
  9. ],
  10. strategies : {
  11. console : winston.transports.Console
  12. }
  13. };
  14.  
  15. const getTransportInstances = R.curry((winstonConf, transportConfig) => {
  16. const transportConstructor = winstonConf.strategies[transportConfig.transportType];
  17. return new (transportConstructor)(transportConfig);
  18. });
  19.  
  20. const logger = new (winston.Logger)({
  21. transports : winstonConf.transports.map(getTransportInstances(winstonConf))
  22. });
  23.  
  24. const appendMetaToEveryLog = (logType, meta) => {
  25. return R.partialRight(R.bind(logger[logType], logger), [{ meta }]);
  26. };
  27.  
  28. const decorateInfoLogForPerformanceMetrics = meta => R.compose(
  29. R.partial(appendMetaToEveryLog('info', meta)),
  30. R.append(R.__, []),
  31. R.concat('PERFORMANCE TIMER ')
  32. );
  33.  
  34. module.exports = meta => ({
  35. error : appendMetaToEveryLog('error', meta),
  36. info : appendMetaToEveryLog('info', meta),
  37. debug : appendMetaToEveryLog('debug', meta),
  38. warn : appendMetaToEveryLog('warn', meta),
  39. perfStart : decorateInfoLogForPerformanceMetrics(meta)('START'),
  40. perfEndSuccess : decorateInfoLogForPerformanceMetrics(meta)('END (SUCCESS)'),
  41. perfEndFail : decorateInfoLogForPerformanceMetrics(meta)('END (FAIL)')
  42. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement