Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | 39x 62x 62x 29x 29x 29x 29x 47x 47x 20x 27x 7x 20x 10x 10x | import { emptyArray } from '../../utils/common/empty.ts';
import { shouldEmitEntry } from '../implementation/level-utils.ts';
import type { LogFormatter } from './formatter.ts';
import { plainFormatter } from './formatter.ts';
import type { LogSink } from './sink.ts';
import { asLogSink } from './sink.ts';
/**
* Creates a log sink that writes all entries to console.log.
*
* This sink sends all log messages to standard output, regardless of their severity level. It's useful when you want
* all logs to go to stdout for shell redirection or processing.
*
* @example Basic usage
*
* ```ts
* import { emitter } from 'emitnlog/logger';
*
* const sink = emitter.consoleLogSink();
* const logger = emitter.createLogger('info', sink);
*
* logger.i`This goes to console.log`;
* logger.e`This also goes to console.log`;
* ```
*
* @param formatter The formatter to use for log entries (default: plainFormatter)
* @returns A LogSink that writes to console.log
*/
export const consoleLogSink = (formatter: LogFormatter = plainFormatter): LogSink =>
asLogSink((level, message, args) => {
const line = formatter(level, message, args);
// eslint-disable-next-line no-undef, no-console
console.log(line, ...(args ?? emptyArray()));
});
/**
* Creates a log sink that writes all entries to console.error.
*
* This sink sends all log messages to standard error, regardless of their severity level. It's useful for CLI tools or
* applications where you want all logging to go to stderr while keeping stdout clean for actual program output.
*
* @example Basic usage
*
* ```ts
* import { emitter } from 'emitnlog/logger';
*
* const sink = emitter.consoleErrorSink();
* const logger = emitter.createLogger('info', sink);
*
* logger.i`This goes to console.error`;
* logger.e`This also goes to console.error`;
* ```
*
* @param formatter The formatter to use for log entries (default: plainFormatter)
* @returns A LogSink that writes to console.error
*/
export const consoleErrorSink = (formatter: LogFormatter = plainFormatter): LogSink =>
asLogSink((level, message, args) => {
const line = formatter(level, message, args);
// eslint-disable-next-line no-undef, no-console
console.error(line, ...(args ?? emptyArray()));
});
/**
* Creates a log sink that routes entries to different console methods based on severity.
*
* This sink provides intelligent routing to give the most appropriate console output:
*
* - Trace, debug → console.debug
* - Info, notice → console.log
* - Warning → console.warn
* - Error, critical, alert, emergency → console.error
*
* This is the most sensible default for most applications as it allows terminal emulators and development tools to
* apply appropriate styling and filtering.
*
* @example Basic usage
*
* ```ts
* import { emitter } from 'emitnlog/logger';
*
* const sink = emitter.consoleByLevelSink();
* const logger = emitter.createLogger('info', sink);
*
* logger.i`Goes to console.log`;
* logger.w`Goes to console.warn`;
* logger.e`Goes to console.error`;
* ```
*
* @param formatter The formatter to use for log entries (default: plainFormatter)
* @returns A LogSink that routes to appropriate console methods
*/
export const consoleByLevelSink = (formatter: LogFormatter = plainFormatter): LogSink =>
asLogSink((level, message, args) => {
const line = formatter(level, message, args);
if (shouldEmitEntry('error', level)) {
// eslint-disable-next-line no-undef, no-console
console.error(line, ...(args ?? emptyArray()));
} else if (shouldEmitEntry('warning', level)) {
// eslint-disable-next-line no-undef, no-console
console.warn(line, ...(args ?? emptyArray()));
} else if (shouldEmitEntry('info', level)) {
// eslint-disable-next-line no-undef, no-console
console.log(line, ...(args ?? emptyArray()));
} else {
// eslint-disable-next-line no-undef, no-console
console.debug(line, ...(args ?? emptyArray()));
}
});
|