better logging for compiling

This commit is contained in:
2026-02-25 16:05:37 -06:00
parent d0bf757d91
commit adcaa92bea
7 changed files with 237 additions and 23 deletions

View File

@@ -285,7 +285,7 @@ function analyze(src, filename) {
_i = 0
while (_i < length(folded._diagnostics)) {
e = folded._diagnostics[_i]
os.print(`${filename}:${text(e.line)}:${text(e.col)}: ${e.severity}: ${e.message}\n`)
log.warn(`${filename}:${text(e.line)}:${text(e.col)}: ${e.severity}: ${e.message}`)
_i = _i + 1
}
if (_wm) {
@@ -443,8 +443,12 @@ function run_ast_fn(name, ast, env, pkg) {
_has_errors = false
while (_di < length(optimized._diagnostics)) {
_diag = optimized._diagnostics[_di]
os.print(`${_diag.file}:${text(_diag.line)}:${text(_diag.col)}: ${_diag.severity}: ${_diag.message}\n`)
if (_diag.severity == "error") _has_errors = true
if (_diag.severity == "error") {
log.error(`${_diag.file}:${text(_diag.line)}:${text(_diag.col)}: ${_diag.severity}: ${_diag.message}`)
_has_errors = true
} else {
log.warn(`${_diag.file}:${text(_diag.line)}:${text(_diag.col)}: ${_diag.severity}: ${_diag.message}`)
}
_di = _di + 1
}
if (_has_errors) disrupt
@@ -506,8 +510,12 @@ function compile_user_blob(name, ast, pkg) {
_has_errors = false
while (_di < length(optimized._diagnostics)) {
_diag = optimized._diagnostics[_di]
os.print(`${_diag.file}:${text(_diag.line)}:${text(_diag.col)}: ${_diag.severity}: ${_diag.message}\n`)
if (_diag.severity == "error") _has_errors = true
if (_diag.severity == "error") {
log.error(`${_diag.file}:${text(_diag.line)}:${text(_diag.col)}: ${_diag.severity}: ${_diag.message}`)
_has_errors = true
} else {
log.warn(`${_diag.file}:${text(_diag.line)}:${text(_diag.col)}: ${_diag.severity}: ${_diag.message}`)
}
_di = _di + 1
}
if (_has_errors) disrupt
@@ -920,9 +928,8 @@ function load_log_config() {
sink: {
terminal: {
type: "console",
format: "pretty",
channels: ["*"],
exclude: ["system", "shop", "build"],
format: "clean",
channels: ["console", "error"],
stack: ["error"]
}
}
@@ -964,6 +971,25 @@ function bare_format(rec) {
return out
}
function clean_format(rec) {
var ev = is_text(rec.event) ? rec.event : json.encode(rec.event, false)
var out = null
var i = 0
var fr = null
if (rec.channel == "error") {
out = `error: ${ev}\n`
} else {
out = `${ev}\n`
}
if (rec.stack && length(rec.stack) > 0) {
for (i = 0; i < length(rec.stack); i = i + 1) {
fr = rec.stack[i]
out = out + ` at ${fr.fn} (${fr.file}:${text(fr.line)}:${text(fr.col)})\n`
}
}
return out
}
function sink_excluded(sink, channel) {
var excluded = false
if (!sink.exclude || length(sink.exclude) == 0) return false
@@ -981,6 +1007,8 @@ function dispatch_to_sink(sink, rec) {
os.print(json.encode(rec, false) + "\n")
else if (sink.format == "bare")
os.print(bare_format(rec))
else if (sink.format == "clean")
os.print(clean_format(rec))
else
os.print(pretty_format(rec))
} else if (sink.type == "file") {