From 72a2fcc91bef9141e3b146c98dd2093a07f6ee6c Mon Sep 17 00:00:00 2001 From: William Grant Date: Tue, 14 Jun 2022 14:00:54 +1000 Subject: [PATCH] fix: handle missing logs folder when performing log rotations bunyan doesnt check if the filepath exists before running the finish command after a log rotation, we patched it to create the directory if it doesnt exist yet --- patches/bunyan+1.8.15.patch | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/patches/bunyan+1.8.15.patch b/patches/bunyan+1.8.15.patch index c3c90f73c..eed3bf8d1 100644 --- a/patches/bunyan+1.8.15.patch +++ b/patches/bunyan+1.8.15.patch @@ -1,10 +1,26 @@ diff --git a/node_modules/bunyan/lib/bunyan.js b/node_modules/bunyan/lib/bunyan.js -index f988560..11af013 100644 +index f988560..a4cf69a 100644 --- a/node_modules/bunyan/lib/bunyan.js +++ b/node_modules/bunyan/lib/bunyan.js -@@ -76,7 +76,8 @@ if (runtimeEnv === 'browser') { +@@ -63,7 +63,7 @@ if (!runtimeEnv) { + } + + +-var os, fs, dtrace; ++var os, fs, pathModule, dtrace; + if (runtimeEnv === 'browser') { + os = { + hostname: function () { +@@ -71,12 +71,15 @@ if (runtimeEnv === 'browser') { + } + }; + fs = {}; ++ pathModule = {}; + dtrace = null; + } else { os = require('os'); fs = require('fs'); ++ pathModule = require('path'); try { - dtrace = require('dtrace-provider' + ''); + throw new Error('dtrace-provider is not available') @@ -12,3 +28,16 @@ index f988560..11af013 100644 } catch (e) { dtrace = null; } +@@ -1512,6 +1515,12 @@ RotatingFileStream.prototype.rotate = function rotate() { + } + + function finish() { ++ if (!fs.existsSync(self.path)) { ++ var dirPath = pathModule.dirname(self.path); ++ if (!fs.existsSync(dirPath)) { ++ fs.mkdirSync(dirPath, { recursive: true }); ++ } ++ } + self._debug(' open %s', self.path); + self.stream = fs.createWriteStream(self.path, + {flags: 'a', encoding: 'utf8'});