@@ -21,6 +21,7 @@ export type LogLevel = 'trace' | 'debug' | 'info' | 'wait' | 'other' | 'event' |
2121interface CustomLevel {
2222 label : string
2323 priority : number
24+ color ?: keyof typeof colorMap
2425}
2526
2627export interface LoggerOptions {
@@ -524,7 +525,8 @@ export class Logger {
524525 public setup ( options ?: LoggerOptions ) {
525526 const { customLevels, drain = consoleDrain , enabled = true , level, parent, prefix } = options ?? { }
526527
527- this . _customLevels = customLevels
528+ // Preserve existing customLevels if new ones aren't provided
529+ this . _customLevels = customLevels ?? this . _customLevels
528530 this . _drain = drain
529531 this . _enabled = enabled
530532 this . _parent = parent
@@ -566,12 +568,18 @@ export class Logger {
566568
567569 // Format the message all pretty and stuff
568570 if ( level !== 'other' ) {
569- const label = this . _customLevels ? this . _customLevels [ level ] ?. label : colorizedLogLevels [ level ]
570- let levelLabel = ( label ?? level . padEnd ( 5 ) ) + ' -'
571+ const customLevel = this . _customLevels ?. [ level ]
572+ const levelColor = ( customLevel ?. color ? colorMap [ customLevel . color ] : colorMap [ level ] ) ?? ( ( s : string ) => s )
573+
574+ // Apply color to label if custom level has a color, otherwise use pre-colorized label
575+ let levelLabel =
576+ ( customLevel ?. color
577+ ? levelColor ( customLevel . label . padEnd ( 9 ) )
578+ : customLevel ?. label ?? colorizedLogLevels [ level ] ?? level . padEnd ( 5 ) ) + ' -'
571579
572580 // Add the prefix if specified
573581 if ( prefix ) {
574- levelLabel = color . bold ( colorMap [ level ] ( prefix + ':' ) ) + levelLabel
582+ levelLabel = color . bold ( levelColor ( prefix + ':' ) ) + levelLabel
575583 }
576584
577585 data . unshift ( levelLabel )
0 commit comments