1- // src/shared/logger/LogLevel.ts
1+ /**
2+ * @fileoverview Log level enumeration and utility functions for the logger.
3+ * Provides definitions for log severity levels and conversion utilities.
4+ */
25
6+ /**
7+ * Enumeration of log severity levels.
8+ * Levels are ordered from least to most severe.
9+ *
10+ * @enum {number}
11+ * @readonly
12+ */
313export enum LogLevel {
14+ /** Trace level - most verbose, used for detailed diagnostic information */
415 Trace = 0 ,
16+ /** Debug level - detailed information for debugging purposes */
517 Debug = 1 ,
18+ /** Info level - general informational messages */
619 Info = 2 ,
20+ /** Warn level - warning messages for potentially problematic situations */
721 Warn = 3 ,
22+ /** Error level - error messages for error conditions */
823 Error = 4 ,
24+ /** Fatal level - fatal error messages for critical failures */
925 Fatal = 5 ,
26+ /** Off level - disables all logging */
1027 Off = 6 ,
1128}
1229
30+ /**
31+ * Converts a log level to its string representation.
32+ *
33+ * @param {LogLevel } level - The log level to convert
34+ * @returns {string } The uppercase string representation of the log level
35+ *
36+ * @example
37+ * levelToString(LogLevel.Debug); // Returns "DEBUG"
38+ * levelToString(LogLevel.Error); // Returns "ERROR"
39+ */
1340export function levelToString ( level : LogLevel ) : string {
1441 switch ( level ) {
1542 case LogLevel . Trace :
@@ -29,6 +56,18 @@ export function levelToString(level: LogLevel): string {
2956 }
3057}
3158
59+ /**
60+ * Converts a string representation to a log level.
61+ * String matching is case-insensitive.
62+ *
63+ * @param {string } str - The string representation of the log level
64+ * @returns {LogLevel } The corresponding log level, or LogLevel.Info if not recognized
65+ *
66+ * @example
67+ * levelFromString("debug"); // Returns LogLevel.Debug
68+ * levelFromString("ERROR"); // Returns LogLevel.Error
69+ * levelFromString("unknown"); // Returns LogLevel.Info (default)
70+ */
3271export function levelFromString ( str : string ) : LogLevel {
3372 switch ( str . upper ( ) ) {
3473 case "TRACE" :
@@ -50,10 +89,35 @@ export function levelFromString(str: string): LogLevel {
5089 }
5190}
5291
92+ /**
93+ * Determines if a log level should be enabled based on minimum threshold.
94+ * A level is enabled if it's at or above the minimum level and not Off.
95+ *
96+ * @param {LogLevel } current - The current log level to check
97+ * @param {LogLevel } min - The minimum log level threshold
98+ * @returns {boolean } True if the current level is enabled, false otherwise
99+ *
100+ * @example
101+ * isEnabled(LogLevel.Error, LogLevel.Warn); // Returns true (Error >= Warn)
102+ * isEnabled(LogLevel.Debug, LogLevel.Warn); // Returns false (Debug < Warn)
103+ * isEnabled(LogLevel.Off, LogLevel.Info); // Returns false (Off disables all)
104+ */
53105export function isEnabled ( current : LogLevel , min : LogLevel ) : boolean {
54106 return current !== LogLevel . Off && current >= min ;
55107}
56108
109+ /**
110+ * Gets the hex color code for a log level.
111+ * Colors are used for visual formatting of log output.
112+ *
113+ * @param {LogLevel } level - The log level to get the color for
114+ * @returns {string } Hex color code (e.g., "#FF1744")
115+ *
116+ * @example
117+ * levelToColor(LogLevel.Error); // Returns "#E57373"
118+ * levelToColor(LogLevel.Fatal); // Returns "#FF1744"
119+ * levelToColor(LogLevel.Debug); // Returns "#64B5F6"
120+ */
57121export function levelToColor ( level : LogLevel ) : string {
58122 switch ( level ) {
59123 case LogLevel . Trace :
@@ -73,6 +137,17 @@ export function levelToColor(level: LogLevel): string {
73137 }
74138}
75139
140+ /**
141+ * Generates an HTML-formatted prefix for a log level with color.
142+ * Intended for use in formatted log output.
143+ *
144+ * @param {LogLevel } level - The log level to generate a prefix for
145+ * @returns {string } HTML-formatted prefix string (e.g., "<font color="#E57373">[ERROR]</font>")
146+ *
147+ * @example
148+ * levelToPrefix(LogLevel.Error); // Returns '<font color="#E57373">[ERROR]</font>'
149+ * levelToPrefix(LogLevel.Info); // Returns '<font color="#81C784">[INFO]</font>'
150+ */
76151export function levelToPrefix ( level : LogLevel ) : string {
77152 const color = levelToColor ( level ) ;
78153 const name = levelToString ( level ) ;
0 commit comments