sc-manager/api/core/coremonitor.mjs

66 lines
2.1 KiB
JavaScript

import { formatLog } from './loghelper.mjs'
import { getStatus, safeWrap } from '../util.mjs'
export default function coremonitor(io, ctx) {
ctx.core.applications.forEach(function(app) {
app.on('updating', safeWrap(ctx.log, `${app.name}.on('updating')`, function() {
io.emit('core.status', getStatus(ctx))
}))
app.on('running', safeWrap(ctx.log, `${app.name}.on('updating')`, function() {
io.emit('core.status', getStatus(ctx))
}))
app.on('updatelog', safeWrap(ctx.log, `${app.name}.on('updatelog')`, function(loglines) {
io.to(`app.${app.name}`).emit('app.updatelog', {
name: app.name,
log: loglines,
})
}))
if (app.name !== ctx.app.name) {
app.ctx.log.on('newlog', safeWrap(ctx.log, `${app.name}.log.on('newlog')`, function(data) {
io.to('logger.' + app.name).emit('newlog', formatLog(data))
}))
}
})
ctx.core.log.on('newlog', safeWrap(ctx.log, `core.log.on('newlog')`, function(data) {
io.to('logger.service-core').emit('newlog', formatLog(data))
}))
ctx.log.on('newlog', safeWrap(ctx.log, 'coremonitor.on.newlog', function(data) {
// Stop infinite regression
if (data?.err?.signal === 'newlogerror') return
try {
io.to('logger.' + ctx.app.name).emit('newlog', formatLog(data))
} catch (err) {
err.signal = 'newlogerror'
throw err
}
}))
/*
log.on('newlog', safeWrap(log, 'coremonitor.on.newlog', function(data) {
io.to('logger').emit('newlog', formatLog(data))
}))
core.on('dbupdated', safeWrap(log, 'coremonitor.on.dbupdated', function() {
io.to('core').emit('core.db', db.get('core').value())
}))
core.on('statusupdated', safeWrap(log, 'coremonitor.on.statusupdated', function() {
io.to('core').emit('core.status', core.status())
}))
core.on('applog', safeWrap(log, 'coremonitor.on.applog', function(app) {
io.to('core.app').emit('core.program.log', {
name: 'app',
logs: app.logs,
})
}))
core.on('managelog', safeWrap(log, 'coremonitor.on.managelog', function(manage) {
io.to('core.manage').emit('core.program.log', {
name: 'manage',
logs: manage.logs,
})
}))*/
}