summaryrefslogtreecommitdiff
path: root/deps/npm/lib/utils/error-handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/utils/error-handler.js')
-rw-r--r--deps/npm/lib/utils/error-handler.js45
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)
}