logging log level by string name

This commit is contained in:
Rolands 2025-08-03 17:28:57 +02:00
parent 11f04148cd
commit 128148da5b
3 changed files with 22 additions and 5 deletions

View file

@ -36,7 +36,7 @@ export const colors = {
//types
export type err = E | string | any;
export type LogHandlers = { [handler in "error" | "info" | "debug"]: Function | null; };
export type LoggerOptions = { log_handlers?: LogHandlers, verbose?: boolean, hard_crash?: boolean, prefix?: string, use_color?: boolean, log_level?:LogLevel};
export type LoggerOptions = { log_handlers?: LogHandlers, verbose?: boolean, hard_crash?: boolean, prefix?: string, use_color?: boolean, log_level?:LogLevel | string};
// enums, which compile to js dicts
export enum LogLevel{
@ -73,7 +73,24 @@ export class LogHandler {
this.verbose = verbose;
this.hard_crash = hard_crash;
this.prefix = prefix;
if (log_level !== undefined) this.log_level = log_level;
if (log_level !== undefined){
if(typeof log_level === 'string'){
if (Object.keys(LogLevel).includes(log_level.toUpperCase()))
this.log_level = LogLevel[log_level.toUpperCase() as keyof typeof LogLevel];
else
LogHandler.info(`Log level must be a string or number (${Object.keys(LogLevel)}), got ${log_level}`); //this is a dev error, so i dont need to handle it in prod
}
else if (typeof log_level === 'number'){
if( log_level >= LogLevel.DEBUG && log_level <= LogLevel.ERROR)
this.log_level = log_level as LogLevel;
else
LogHandler.info(`Log level must be a string or number (${Object.keys(LogLevel)}`);
}
else
LogHandler.info(`Log level must be a string or number (${Object.keys(LogLevel)}), got ${typeof log_level}`);
if(!this.log_level) this.log_level = LogLevel.DEBUG; //default log level
}
if (log_handlers !== undefined) this.log_handlers = log_handlers;
// set to use colors in terminal logs. Non-chromium browsers dont support these color bytes, so lets not spam garbage in the console.

View file

@ -1,12 +1,12 @@
{
"name": "socio",
"version": "1.13.12",
"version": "1.13.13",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "socio",
"version": "1.13.12",
"version": "1.13.13",
"license": "MIT",
"dependencies": {
"js-yaml": "^4.1.0",

View file

@ -1,6 +1,6 @@
{
"name": "socio",
"version": "1.13.12",
"version": "1.13.13",
"description": "A WebSocket Real-Time Communication (RTC) API framework.",
"main": "./dist/core.js",
"type": "module",