@obsidize/logger
Version:
A tiny javascript logging library
30 lines (29 loc) • 991 B
JavaScript
import { LogEventSerializer } from '../core/log-event-serializer';
import { LogLevel } from '../core/log-level';
function invokeConsole(target, level, message, params) {
if (level >= LogLevel.ERROR) {
target.error(message, ...params);
return;
}
if (level >= LogLevel.WARN) {
target.warn(message, ...params);
return;
}
target.log(message, ...params);
}
/**
* Send events to a target console-like instance.
* @param config - optional customization config
* @returns an outlet function that can be invoked by a transport
*/
export function consoleOutput(config = {}) {
const target = config.target || console;
const invoke = config.invoke || invokeConsole;
const serialize = LogEventSerializer.parseDelegateFrom(config);
return (ev) => {
const { level, params } = ev;
const p = Array.isArray(params) ? params : [];
const message = serialize(ev);
invoke(target, level, message, p);
};
}