@@ -238,6 +238,13 @@ class Logger {
238238 #serializers;
239239 #hasCustomSerializers;
240240
241+ /**
242+ * Create a new Logger instance
243+ * @param {object } [options]
244+ * @param {string } [options.level] - Minimum log level (default: 'info')
245+ * @param {object } [options.bindings] - Context fields (default: {})
246+ * @param {object } [options.serializers] - Custom serializers (default: {})
247+ */
241248 constructor ( options = kEmptyObject ) {
242249 validateObject ( options , 'options' ) ;
243250 const {
@@ -247,13 +254,7 @@ class Logger {
247254 } = options ;
248255
249256 validateString ( level , 'options.level' ) ;
250- if ( ! LEVELS [ level ] ) {
251- throw new ERR_INVALID_ARG_VALUE (
252- 'options.level' ,
253- level ,
254- `must be one of: ${ LEVEL_NAMES . join ( ', ' ) } ` ,
255- ) ;
256- }
257+ validateOneOf ( level , 'options.level' , LEVEL_NAMES ) ;
257258
258259 validateObject ( bindings , 'options.bindings' ) ;
259260 validateObject ( serializers , 'options.serializers' ) ;
@@ -291,8 +292,8 @@ class Logger {
291292
292293 /**
293294 * Pre-serialize bindings
294- * @param {object } bindings
295- * @returns {string }
295+ * @param {object } bindings - Context fields to serialize
296+ * @returns {string } Pre-serialized bindings as JSON string
296297 * @private
297298 */
298299 #serializeBindings( bindings ) {
@@ -329,8 +330,8 @@ class Logger {
329330
330331 /**
331332 * Check if a level would be logged
332- * @param {string } level
333- * @returns {boolean }
333+ * @param {string } level - Log level to check
334+ * @returns {boolean } True if enabled, false otherwise
334335 */
335336 enabled ( level ) {
336337 return LEVELS [ level ] >= this . #levelValue;
@@ -340,7 +341,9 @@ class Logger {
340341 * Create a child logger with additional context
341342 * @param {object } bindings - Context to add to all child logs
342343 * @param {object } [options] - Optional overrides
343- * @returns {Logger }
344+ * @param {object } [options.serializers] - Custom serializers for child logger
345+ * @param {string } [options.level] - Log level for child logger
346+ * @returns {Logger } Child logger instance
344347 */
345348 child ( bindings , options = kEmptyObject ) {
346349 validateObject ( bindings , 'bindings' ) ;
@@ -383,8 +386,8 @@ class Logger {
383386
384387 /**
385388 * Check if value is an Error object
386- * @param {* } value
387- * @returns {boolean }
389+ * @param {* } value - Value to check
390+ * @returns {boolean } True if value is an Error
388391 * @private
389392 */
390393 #isError( value ) {
@@ -394,7 +397,7 @@ class Logger {
394397 /**
395398 * Apply serializers to an object's properties
396399 * @param {object } obj - Object to serialize
397- * @returns {object } Serialized object
400+ * @returns {object } Serialized object with applied serializers
398401 * @private
399402 */
400403 #applySerializers( obj ) {
@@ -423,10 +426,11 @@ class Logger {
423426
424427 /**
425428 * Internal log method
426- * @param {string } level
427- * @param {number } levelValue
429+ * @param {string } level - Log level
430+ * @param {number } levelValue - Numeric log level
428431 * @param {string|object } msgOrObj - Message string or object with msg property
429432 * @param {object } [fields] - Optional fields to merge
433+ * @private
430434 */
431435 #log( level , levelValue , msgOrObj , fields ) {
432436 if ( levelValue < this . #levelValue) {
@@ -508,7 +512,7 @@ class Logger {
508512 * Serialize Error object for logging (with recursive cause handling)
509513 * @param {object } err - Error object to serialize
510514 * @param {Set } [seen] - Set to track circular references
511- * @returns {object } Serialized error object
515+ * @returns {object|string } Serialized error object or '[Circular]'
512516 * @private
513517 */
514518 #serializeError( err , seen = new SafeSet ( ) ) {
@@ -542,26 +546,56 @@ class Logger {
542546 return serialized ;
543547 }
544548
549+ /**
550+ * Log a message at trace level
551+ * @param {string|object|Error } msgOrObj - Message or object
552+ * @param {object } [fields] - Optional fields
553+ */
545554 trace ( msgOrObj , fields ) {
546555 this . #log( 'trace' , LEVELS . trace , msgOrObj , fields ) ;
547556 }
548557
558+ /**
559+ * Log a message at debug level
560+ * @param {string|object|Error } msgOrObj - Message or object
561+ * @param {object } [fields] - Optional fields
562+ */
549563 debug ( msgOrObj , fields ) {
550564 this . #log( 'debug' , LEVELS . debug , msgOrObj , fields ) ;
551565 }
552566
567+ /**
568+ * Log a message at info level
569+ * @param {string|object|Error } msgOrObj - Message or object
570+ * @param {object } [fields] - Optional fields
571+ */
553572 info ( msgOrObj , fields ) {
554573 this . #log( 'info' , LEVELS . info , msgOrObj , fields ) ;
555574 }
556575
576+ /**
577+ * Log a message at warn level
578+ * @param {string|object|Error } msgOrObj - Message or object
579+ * @param {object } [fields] - Optional fields
580+ */
557581 warn ( msgOrObj , fields ) {
558582 this . #log( 'warn' , LEVELS . warn , msgOrObj , fields ) ;
559583 }
560584
585+ /**
586+ * Log a message at error level
587+ * @param {string|object|Error } msgOrObj - Message or object
588+ * @param {object } [fields] - Optional fields
589+ */
561590 error ( msgOrObj , fields ) {
562591 this . #log( 'error' , LEVELS . error , msgOrObj , fields ) ;
563592 }
564593
594+ /**
595+ * Log a message at fatal level
596+ * @param {string|object|Error } msgOrObj - Message or object
597+ * @param {object } [fields] - Optional fields
598+ */
565599 fatal ( msgOrObj , fields ) {
566600 this . #log( 'fatal' , LEVELS . fatal , msgOrObj , fields ) ;
567601 }
0 commit comments