diff options
Diffstat (limited to 'deps/npm/lib/utils/error-handler.js')
-rw-r--r-- | deps/npm/lib/utils/error-handler.js | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js index f3cfc3c5ea..a2911a101a 100644 --- a/deps/npm/lib/utils/error-handler.js +++ b/deps/npm/lib/utils/error-handler.js @@ -14,6 +14,15 @@ var chain = require('slide').chain var writeStreamAtomic = require('fs-write-stream-atomic') var errorMessage = require('./error-message.js') var stopMetrics = require('./metrics.js').stop +var mkdir = require('mkdirp') + +var logFileName +function getLogFile () { + if (!logFileName) { + logFileName = path.resolve(npm.config.get('cache'), '_logs', (new Date()).toISOString().replace(/[.:]/g, '_') + '-debug.log') + } + return logFileName +} process.on('exit', function (code) { log.disableProgress() @@ -37,7 +46,7 @@ process.on('exit', function (code) { '', [ 'Please include the following file with any support request:', - ' ' + path.resolve('npm-debug.log') + ' ' + getLogFile() ].join('\n') ) wroteLogFile = false @@ -79,7 +88,7 @@ function exit (code, noLog) { else writeLogFile(reallyExit.bind(this, er)) } else { if (!noLog && code) writeLogFile(reallyExit) - else rm('npm-debug.log', reallyExit) + else rm(getLogFile(), reallyExit) } }) rollbacks.length = 0 @@ -191,22 +200,26 @@ function writeLogFile (cb) { writingLogFile = true wroteLogFile = true - var fstr = writeStreamAtomic('npm-debug.log') var os = require('os') - var out = '' - log.record.forEach(function (m) { - var pref = [m.id, m.level] - if (m.prefix) pref.push(m.prefix) - pref = pref.join(' ') - - m.message.trim().split(/\r?\n/).map(function (line) { - return (pref + ' ' + line).trim() - }).forEach(function (line) { - out += line + os.EOL + mkdir(path.resolve(npm.config.get('cache'), '_logs'), function (er) { + if (er) { + cb(er) + return + } + var fstr = writeStreamAtomic(getLogFile()) + log.record.forEach(function (m) { + var pref = [m.id, m.level] + if (m.prefix) pref.push(m.prefix) + pref = pref.join(' ') + + m.message.trim().split(/\r?\n/).map(function (line) { + return (pref + ' ' + line).trim() + }).forEach(function (line) { + fstr.write(line + os.EOL) + }) }) + fstr.end() + fstr.on('close', cb) }) - - fstr.end(out) - fstr.on('close', cb) } |