Finish fleshing out Model; refactor mixin types; TRUNCATE

This commit is contained in:
garrettmills
2020-07-19 14:13:48 -05:00
parent e4f5da7ac6
commit b915fcedf9
30 changed files with 832 additions and 131 deletions

View File

@@ -29,17 +29,17 @@ export default abstract class Logger {
case LoggingLevel.Success:
return green('success')
case LoggingLevel.Error:
return red('error')
return red(' error')
case LoggingLevel.Warning:
return yellow('warning')
case LoggingLevel.Info:
return blue('info')
return blue(' info')
case LoggingLevel.Debug:
return cyan('debug')
return cyan(' debug')
case LoggingLevel.Verbose:
return gray('verbose')
case LoggingLevel.Silent:
return gray('silent')
return gray(' silent')
}
}
}

View File

@@ -59,6 +59,7 @@ class Logging {
level,
output,
date: new Date,
caller_name: this.get_caller_info(),
}
}
@@ -73,6 +74,14 @@ class Logging {
public remove_logger(logger_class: typeof Logger) {
this._loggers = this._loggers.filter(x => !(x instanceof logger_class))
}
protected get_caller_info(level = 5): string {
let e = new Error
if ( !e.stack ) return 'Unknown'
return e.stack.split(' at ')
.slice(level)
.map((x: string): string => x.trim().split(' (')[0].split('.')[0].split(':')[0])[0]
}
}
export { Logging }

View File

@@ -1,11 +1,11 @@
import AbstractLogger from './Logger.ts'
import { LogMessage } from './types.ts'
import { gray } from '../../external/std.ts'
import { gray, cyan } from '../../external/std.ts'
export default class StandardLogger extends AbstractLogger {
public async write(message: LogMessage): Promise<void> {
const prefix = this.level_display(message.level)
const text = `${prefix} ${gray(this.format_date(message.date))}`
const text = `${prefix} ${gray(this.format_date(message.date))} (${cyan(message.caller_name || 'Unknown')})`
console.log(text, message.output)
}
}

View File

@@ -24,6 +24,7 @@ interface LogMessage {
level: LoggingLevel,
date: Date,
output: any,
caller_name: string,
}
const isLogMessage = (something: any): something is LogMessage => {