Skip to content

Commit

Permalink
Emit "log" events when logging, and some cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
isaacs committed Oct 29, 2010
1 parent d76eb9f commit 8650ff3
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions lib/utils/log.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ silent quiets everything

module.exports = log
var stdio = process.binding("stdio")
, doColor
function colorize (msg, color) {
if (!msg) return ""
if (doColor === undefined) {
var logStream = getLogStream()
, doColor = false
if (logStream) {
try {
doColor = stdio.isatty(logStream.fd)
} catch (ex) {
Expand Down Expand Up @@ -95,7 +96,6 @@ Object.defineProperty(log, "level",
npm.config.set("showlevel", l)
}
})
var logStream
function log (msg, pref, level, cb) {
if (typeof level === "function") cb = level, level = null
var show = log.level
Expand Down Expand Up @@ -128,23 +128,37 @@ function log (msg, pref, level, cb) {
return
}
log.level = show
npm.emit("log", { level : level, msg : msg, pref : pref, cb : cb })
}

var logStream
function getLogStream () {
var logFD = npm.config.get("logfd")
, ls
// effectively sending errors to /dev/null
if (!logFD && logFD !== 0) cb && cb() || true
if (!logFD && logFD !== 0) return
if (typeof logFD === "string") logFD = +logFD
if (logFD && typeof logFD === "object") {
ls = logFD
logFD = ls.fd
}
if (!logStream || logStream.fd !== logFD) {
if (!ls) try { ls = new net.Stream(logFD) } catch (ex) {}
if (!ls || !ls.writable) return cb && cb() || true
if (!ls || !ls.writable) return
logStream = ls
}
return logStream
}

if (!isFinite(level) || level < show) return cb && cb()
npm.on("log", function (logData) {
var level = logData.level
, msg = logData.msg
, pref = logData.pref
, cb = logData.cb || function () {}
, logStream = getLogStream()
, show = log.level
, spaces = " "
if (!isFinite(level) || level < show) return cb()
// console.error("level, showlevel, show", level, show, (level >= show))
pref = colorize("npm", COLOR.npm)
+ (COLOR[level] ? " "+colorize(
Expand All @@ -163,8 +177,8 @@ function log (msg, pref, level, cb) {
cb()
})
return flushed
}
var spaces = " "
})

log.er = function (cb, msg) {
if (!msg) throw new Error(
"Why bother logging it if you're not going to print a message?")
Expand Down

0 comments on commit 8650ff3

Please sign in to comment.