Skip to content

Commit

Permalink
logging enhancements to help seneca-repl
Browse files Browse the repository at this point in the history
  • Loading branch information
rjrodger committed Mar 1, 2019
1 parent 2f86796 commit 5f90f24
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 92 deletions.
4 changes: 4 additions & 0 deletions lib/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -512,6 +512,10 @@ exports.make_standard_act_log_entry = function(
exports.make_standard_err_log_entry = function(err, ctxt) {
if (!err) return ctxt

if(err.details && ctxt && ctxt.caller) {
err.details.caller = ctxt.caller
}

return _.extend(
{
notice: err.message,
Expand Down
184 changes: 97 additions & 87 deletions lib/logging.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ function logging() {

logging.preload = function() {
var seneca = this

// TODO: temporary for seneca-repl
seneca.__build_test_log__$$ = build_test_log

var so = seneca.options()
var logspec = so.log.basic || so.log || {}

Expand Down Expand Up @@ -54,92 +58,7 @@ logging.preload = function() {
logger = function(seneca, data) {
if (logrouter(data)) {
try {
var logstr
var time = data.when - seneca.start_time

if ('test' === origspec || 'print' === origspec) {
var logb = [
time +
'/' +
seneca.id.substring(0, 2) +
'/' +
seneca.tag +
' ' +
data.level.toUpperCase(),
(data.kind || 'data') +
(data.case ? '/' + data.case : '') +
(data.meta ? (data.meta.sync ? '/s' : '/a') : '')
]

if ('act' === data.kind) {
if (data.meta) {
logb.push(
data.meta.id
.split('/')
.map(function(s) {
return s.substring(0, 2)
})
.join('/')
)

logb.push(data.meta.pattern)
}

logb.push(
Util.inspect(seneca.util.clean(data.result || data.msg))
.replace(/\s+/g, '')
.substring(0, 88)
)

logb.push(data.actdef.id)

if (data.notice) {
logb.push(data.notice)
}

if ('ERR' === data.case) {
logb.push('\n\n' + data.err.stack + '\n' + data.caller + '\n')
}
} else if ('add' === data.kind) {
logb.push(data.pattern)
logb.push(data.name)
} else if ('plugin' === data.kind) {
logb.push(
data.plugin_name +
(data.plugin_tag ? '$' + data.plugin_tag : '')
)
} else if ('options' === data.kind) {
// deliberately omit
} else if ('notice' === data.kind) {
logb.push(data.notice)
} else if ('listen' === data.kind || 'client' === data.kind) {
var config = data.options && data.options[0]
logb.push(
[
config.type,
config.pin,
config.host,
_.isFunction(config.port) ? '' : config.port
].join(';')
)
} else {
logb.push(
Util.inspect(data)
.replace(/\n/g, ' ')
.substring(0, 88)
)
}

logstr = logb.join('\t')
} else {
logstr = Util.inspect(data, { depth: null })
logstr =
time +
':\n\t' +
logstr.replace(/\n/g, '\n\t') +
'\n------------------------------------------------\n\n'
}

var logstr = build_test_log(seneca, origspec, data)
Print.log(logstr)
} catch (e) {
Print.log(data)
Expand All @@ -150,11 +69,102 @@ logging.preload = function() {

return {
extend: {
logger: logger
logger: logger,
}
}
}

function build_test_log(seneca, origspec, data) {
var logstr
var time = data.when - seneca.start_time

if ('test' === origspec || 'print' === origspec) {
var logb = [
time +
'/' +
seneca.id.substring(0, 2) +
'/' +
seneca.tag +
' ' +
data.level.toUpperCase(),
(data.kind || 'data') +
(data.case ? '/' + data.case : '') +
(data.meta ? (data.meta.sync ? '/s' : '/a') : '')
]

if ('act' === data.kind) {
if (data.meta) {
logb.push(
data.meta.id
.split('/')
.map(function(s) {
return s.substring(0, 2)
})
.join('/')
)

logb.push(data.meta.pattern)
}

logb.push(
Util.inspect(seneca.util.clean(data.result || data.msg))
.replace(/\s+/g, '')
.substring(0, 88)
)

logb.push(data.actdef.id)

if (data.notice) {
logb.push(data.notice)
}

if ('ERR' === data.case) {
logb.push('\n\n' + data.err.stack + '\n' + data.caller + '\n')
}
} else if ('add' === data.kind) {
logb.push(data.pattern)
logb.push(data.name)
} else if ('plugin' === data.kind) {
logb.push(
data.plugin_name +
(data.plugin_tag ? '$' + data.plugin_tag : '')
)
} else if ('options' === data.kind) {
// deliberately omit
} else if ('notice' === data.kind) {
logb.push(data.notice)
} else if ('listen' === data.kind || 'client' === data.kind) {
var config = data.options && data.options[0]
logb.push(
[
config.type,
config.pin,
config.host,
_.isFunction(config.port) ? '' : config.port
].join(';')
)
} else {
logb.push(
Util.inspect(data)
.replace(/\n/g, ' ')
.substring(0, 88)
)
}

logstr = logb.join('\t')
} else {
logstr = Util.inspect(data, { depth: null })
logstr =
time +
':\n\t' +
logstr.replace(/\n/g, '\n\t') +
'\n------------------------------------------------\n\n'
}

return logstr
}


// TODO: needs massive refactor

function logfilter(options) {
Expand Down
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@
"hoek": "^5.0.4",
"lab": "^18.0.2",
"prettier": "^1.16.4",
"seneca-entity": "^3.0.1",
"seneca-entity": "^3.2.0",
"seneca-error-test": "^0.2.2",
"seneca-joi": "^3.1.0"
}
Expand Down
3 changes: 3 additions & 0 deletions seneca.js
Original file line number Diff line number Diff line change
Expand Up @@ -1103,6 +1103,9 @@ function make_log(instance, modifier) {
instance.log ||
function log(data) {
instance.private$.logger(this, data)
if(instance.on_log) {
instance.on_log(data)
}
}

log = prepare_log(instance, make_modified_log(log, modifier))
Expand Down

0 comments on commit 5f90f24

Please sign in to comment.