@mks2508/better-logger 3.1.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +23 -1
- package/dist/Logger.d.ts +12 -0
- package/dist/Logger.d.ts.map +1 -1
- package/dist/chunks/{Logger-C086w3EM.js → Logger-D-gmmgR2.js} +201 -12
- package/dist/chunks/Logger-D-gmmgR2.js.map +1 -0
- package/dist/chunks/Logger-D7cfaz15.js +2 -0
- package/dist/chunks/Logger-D7cfaz15.js.map +1 -0
- package/dist/chunks/{environment-DXHouGD4.js → environment-COWvu6Wz.js} +15 -15
- package/dist/chunks/{environment-DXHouGD4.js.map → environment-COWvu6Wz.js.map} +1 -1
- package/dist/chunks/{formatting-BNnVUPcw.js → formatting-CYjT9yhO.js} +2 -2
- package/dist/chunks/{formatting-BNnVUPcw.js.map → formatting-CYjT9yhO.js.map} +1 -1
- package/dist/core.js +2 -2
- package/dist/exports.cjs +1 -1
- package/dist/exports.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -192
- package/dist/index.js.map +1 -1
- package/dist/styling.cjs +1 -1
- package/dist/styling.js +3 -3
- package/dist/types/core.d.ts +44 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/writers/BufferWriter.d.ts +96 -0
- package/dist/writers/BufferWriter.d.ts.map +1 -0
- package/dist/writers/index.d.ts +6 -0
- package/dist/writers/index.d.ts.map +1 -0
- package/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/src/Logger.ts +51 -9
- package/src/index.ts +5 -1
- package/src/types/core.ts +46 -0
- package/src/writers/BufferWriter.ts +157 -0
- package/src/writers/index.ts +6 -0
- package/dist/chunks/Logger-BV0v1AyC.js +0 -2
- package/dist/chunks/Logger-BV0v1AyC.js.map +0 -1
- package/dist/chunks/Logger-C086w3EM.js.map +0 -1
package/dist/types/core.d.ts
CHANGED
|
@@ -91,6 +91,46 @@ export type ExportFormat = 'json' | 'csv' | 'markdown' | 'plain' | 'html';
|
|
|
91
91
|
* - ci: Formato optimizado para CI/CD (sin emojis, texto simple)
|
|
92
92
|
*/
|
|
93
93
|
export type OutputFormat = 'auto' | 'plain' | 'ansi' | 'build' | 'ci';
|
|
94
|
+
/**
|
|
95
|
+
* Output modes for controlling where logs are written
|
|
96
|
+
* @typedef {'console' | 'silent' | 'custom'} OutputMode
|
|
97
|
+
*
|
|
98
|
+
* @description
|
|
99
|
+
* - console: Standard console.log output (default)
|
|
100
|
+
* - silent: No output at all
|
|
101
|
+
* - custom: Use custom OutputWriter for advanced scenarios
|
|
102
|
+
*/
|
|
103
|
+
export type OutputMode = 'console' | 'silent' | 'custom';
|
|
104
|
+
/**
|
|
105
|
+
* Custom output writer interface for redirecting log output
|
|
106
|
+
*
|
|
107
|
+
* @interface OutputWriter
|
|
108
|
+
* @since 4.0.0
|
|
109
|
+
*
|
|
110
|
+
* @description
|
|
111
|
+
* Allows redirecting log output to custom destinations like:
|
|
112
|
+
* - DraftLog for CLI spinners with concurrent logging
|
|
113
|
+
* - Buffers for collecting logs during operations
|
|
114
|
+
* - Custom streams or transports
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* class BufferWriter implements OutputWriter {
|
|
118
|
+
* private buffer: string[] = [];
|
|
119
|
+
*
|
|
120
|
+
* write(message: string, level: LogLevel, styles: string[]): void {
|
|
121
|
+
* this.buffer.push(message);
|
|
122
|
+
* }
|
|
123
|
+
*
|
|
124
|
+
* flush(): void {
|
|
125
|
+
* this.buffer.forEach(msg => console.log(msg));
|
|
126
|
+
* this.buffer = [];
|
|
127
|
+
* }
|
|
128
|
+
* }
|
|
129
|
+
*/
|
|
130
|
+
export interface OutputWriter {
|
|
131
|
+
write(message: string, level: LogLevel, styles: string[]): void;
|
|
132
|
+
flush?(): void;
|
|
133
|
+
}
|
|
94
134
|
/**
|
|
95
135
|
* Interfaz de configuración para instancias del logger
|
|
96
136
|
*
|
|
@@ -121,6 +161,10 @@ export interface LoggerConfig {
|
|
|
121
161
|
bufferSize?: number;
|
|
122
162
|
autoDetectTheme?: boolean;
|
|
123
163
|
outputFormat?: OutputFormat;
|
|
164
|
+
/** Output mode: 'console' (default), 'silent', or 'custom' @since 4.0.0 */
|
|
165
|
+
outputMode?: OutputMode;
|
|
166
|
+
/** Custom writer when outputMode is 'custom' @since 4.0.0 */
|
|
167
|
+
outputWriter?: OutputWriter;
|
|
124
168
|
}
|
|
125
169
|
/**
|
|
126
170
|
* Información parseada del stack trace
|
package/dist/types/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { LogLevel, OutputWriter } from '../types/core.js';
|
|
2
|
+
/**
|
|
3
|
+
* Entry in the log buffer
|
|
4
|
+
*/
|
|
5
|
+
export interface BufferEntry {
|
|
6
|
+
message: string;
|
|
7
|
+
level: LogLevel;
|
|
8
|
+
styles: string[];
|
|
9
|
+
timestamp: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* BufferWriter collects log messages in memory instead of outputting to console.
|
|
13
|
+
* Useful for:
|
|
14
|
+
* - CLI operations with spinners (buffer logs during spinner, show after)
|
|
15
|
+
* - Testing (capture logs for assertions)
|
|
16
|
+
* - Batch processing (collect logs, process together)
|
|
17
|
+
*
|
|
18
|
+
* @implements {OutputWriter}
|
|
19
|
+
* @since 4.0.0
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* import logger, { BufferWriter } from '@mks2508/better-logger';
|
|
23
|
+
*
|
|
24
|
+
* const buffer = new BufferWriter();
|
|
25
|
+
* logger.updateConfig({
|
|
26
|
+
* outputMode: 'custom',
|
|
27
|
+
* outputWriter: buffer
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // Logs go to buffer, not console
|
|
31
|
+
* spinner.start('Loading...');
|
|
32
|
+
* logger.info('Connecting...');
|
|
33
|
+
* logger.info('Processing...');
|
|
34
|
+
* spinner.stop();
|
|
35
|
+
*
|
|
36
|
+
* // Show buffered logs
|
|
37
|
+
* logger.updateConfig({ outputMode: 'console' });
|
|
38
|
+
* buffer.flush(); // Outputs all buffered logs to console
|
|
39
|
+
*/
|
|
40
|
+
export declare class BufferWriter implements OutputWriter {
|
|
41
|
+
private buffer;
|
|
42
|
+
private maxSize;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new BufferWriter
|
|
45
|
+
* @param maxSize - Maximum number of entries to buffer (default: 1000)
|
|
46
|
+
*/
|
|
47
|
+
constructor(maxSize?: number);
|
|
48
|
+
/**
|
|
49
|
+
* Writes a log entry to the buffer
|
|
50
|
+
* @param message - Formatted log message
|
|
51
|
+
* @param level - Log level
|
|
52
|
+
* @param styles - CSS styles (for browser console)
|
|
53
|
+
*/
|
|
54
|
+
write(message: string, level: LogLevel, styles: string[]): void;
|
|
55
|
+
/**
|
|
56
|
+
* Returns all buffered entries
|
|
57
|
+
* @returns Copy of the buffer array
|
|
58
|
+
*/
|
|
59
|
+
getBuffer(): BufferEntry[];
|
|
60
|
+
/**
|
|
61
|
+
* Returns buffered entries filtered by log level
|
|
62
|
+
* @param levels - Log levels to include
|
|
63
|
+
* @returns Filtered buffer entries
|
|
64
|
+
*/
|
|
65
|
+
getByLevel(...levels: LogLevel[]): BufferEntry[];
|
|
66
|
+
/**
|
|
67
|
+
* Returns the number of buffered entries
|
|
68
|
+
*/
|
|
69
|
+
get size(): number;
|
|
70
|
+
/**
|
|
71
|
+
* Checks if buffer is empty
|
|
72
|
+
*/
|
|
73
|
+
get isEmpty(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Clears all buffered entries
|
|
76
|
+
*/
|
|
77
|
+
clear(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Outputs all buffered entries to console and clears the buffer
|
|
80
|
+
*/
|
|
81
|
+
flush(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Outputs buffered entries to console without clearing
|
|
84
|
+
*/
|
|
85
|
+
replay(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Returns all messages as an array of strings
|
|
88
|
+
*/
|
|
89
|
+
toArray(): string[];
|
|
90
|
+
/**
|
|
91
|
+
* Returns all messages joined as a single string
|
|
92
|
+
* @param separator - String to join messages with (default: newline)
|
|
93
|
+
*/
|
|
94
|
+
toString(separator?: string): string;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=BufferWriter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BufferWriter.d.ts","sourceRoot":"","sources":["../../src/writers/BufferWriter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAS;IAExB;;;OAGG;gBACS,OAAO,GAAE,MAAa;IAIlC;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAa/D;;;OAGG;IACH,SAAS,IAAI,WAAW,EAAE;IAI1B;;;;OAIG;IACH,UAAU,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;IAIhD;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,MAAM,IAAI,IAAI;IAUd;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;;OAGG;IACH,QAAQ,CAAC,SAAS,GAAE,MAAa,GAAG,MAAM;CAG7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/writers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mks2508/better-logger",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Logger avanzado para consola con estilos CSS, temas adaptativos, badges automáticos, SVG, animaciones, CLI integrado y soporte dual browser/terminal con colores ANSI",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mks2508/better-logger-core",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.1-alpha.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Universal core logging functionality for Better Logger - Works in both Node.js and browser environments",
|
|
6
6
|
"main": "dist/index.cjs",
|
package/src/Logger.ts
CHANGED
|
@@ -36,7 +36,8 @@ import { TransportManager } from './transports/index.js';
|
|
|
36
36
|
import { parseStackTrace } from './utils/stackTrace.js';
|
|
37
37
|
import { formatTimestamp } from './utils/timestamps.js';
|
|
38
38
|
import { createStyledOutput, setupThemeChangeListener } from './utils/output.js';
|
|
39
|
-
import { getEnvironment } from './utils/environment-detector.js';
|
|
39
|
+
import { getEnvironment, getColorCapability } from './utils/environment-detector.js';
|
|
40
|
+
import { formatBadge } from './terminal/formatter.js';
|
|
40
41
|
|
|
41
42
|
// Styling imports
|
|
42
43
|
import {
|
|
@@ -942,12 +943,8 @@ export class Logger {
|
|
|
942
943
|
const groupIndent = ' '.repeat(this.groupDepth);
|
|
943
944
|
const finalFormat = groupIndent + format;
|
|
944
945
|
|
|
945
|
-
// Output
|
|
946
|
-
|
|
947
|
-
console.log(finalFormat, ...styles, ...additionalArgs);
|
|
948
|
-
} else {
|
|
949
|
-
console.log(finalFormat, ...styles);
|
|
950
|
-
}
|
|
946
|
+
// Output via configured writer (console by default)
|
|
947
|
+
this.writeOutput(finalFormat, level, styles, additionalArgs);
|
|
951
948
|
|
|
952
949
|
// Update export handler group info
|
|
953
950
|
if (this.exportHandler) {
|
|
@@ -999,11 +996,13 @@ export class Logger {
|
|
|
999
996
|
if (!this.shouldLog(level)) return;
|
|
1000
997
|
|
|
1001
998
|
let prefix = '';
|
|
999
|
+
const colorCapability = getColorCapability();
|
|
1000
|
+
|
|
1002
1001
|
if (bindings.badges?.length) {
|
|
1003
|
-
prefix += bindings.badges.map(b =>
|
|
1002
|
+
prefix += bindings.badges.map(b => formatBadge(b, 'pill', colorCapability, '#00ff88')).join(' ') + ' ';
|
|
1004
1003
|
}
|
|
1005
1004
|
if (bindings.scope) {
|
|
1006
|
-
prefix +=
|
|
1005
|
+
prefix += formatBadge(bindings.scope, 'pill', colorCapability, '#00ffff') + ' ';
|
|
1007
1006
|
}
|
|
1008
1007
|
|
|
1009
1008
|
if (prefix && args.length > 0) {
|
|
@@ -1463,6 +1462,49 @@ export class Logger {
|
|
|
1463
1462
|
}
|
|
1464
1463
|
}
|
|
1465
1464
|
|
|
1465
|
+
// ===== OUTPUT WRITER SYSTEM =====
|
|
1466
|
+
|
|
1467
|
+
/**
|
|
1468
|
+
* Writes formatted output to the configured destination.
|
|
1469
|
+
* Respects outputMode configuration for console, silent, or custom output.
|
|
1470
|
+
*
|
|
1471
|
+
* @private
|
|
1472
|
+
* @param {string} message - Formatted log message
|
|
1473
|
+
* @param {LogLevel} level - Log level
|
|
1474
|
+
* @param {string[]} styles - CSS styles for browser console
|
|
1475
|
+
* @param {any[]} additionalArgs - Additional arguments to log
|
|
1476
|
+
* @since 4.0.0
|
|
1477
|
+
*/
|
|
1478
|
+
private writeOutput(
|
|
1479
|
+
message: string,
|
|
1480
|
+
level: LogLevel,
|
|
1481
|
+
styles: string[],
|
|
1482
|
+
additionalArgs: any[]
|
|
1483
|
+
): void {
|
|
1484
|
+
const mode = this.config.outputMode ?? 'console';
|
|
1485
|
+
|
|
1486
|
+
// Silent mode: no output
|
|
1487
|
+
if (mode === 'silent') {
|
|
1488
|
+
return;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
// Custom mode: use configured writer
|
|
1492
|
+
if (mode === 'custom' && this.config.outputWriter) {
|
|
1493
|
+
const fullMessage = additionalArgs.length > 0
|
|
1494
|
+
? `${message} ${additionalArgs.map(a => String(a)).join(' ')}`
|
|
1495
|
+
: message;
|
|
1496
|
+
this.config.outputWriter.write(fullMessage, level, styles);
|
|
1497
|
+
return;
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
// Default: console output
|
|
1501
|
+
if (additionalArgs.length > 0) {
|
|
1502
|
+
console.log(message, ...styles, ...additionalArgs);
|
|
1503
|
+
} else {
|
|
1504
|
+
console.log(message, ...styles);
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1507
|
+
|
|
1466
1508
|
// ===== CLI SYSTEM =====
|
|
1467
1509
|
|
|
1468
1510
|
/**
|
package/src/index.ts
CHANGED
|
@@ -371,4 +371,8 @@ export {
|
|
|
371
371
|
getEnvironmentInfo,
|
|
372
372
|
} from './utils/environment-detector.js';
|
|
373
373
|
|
|
374
|
-
export type { Environment } from './utils/environment-detector.js';
|
|
374
|
+
export type { Environment } from './utils/environment-detector.js';
|
|
375
|
+
|
|
376
|
+
// Output writers for custom log destinations
|
|
377
|
+
export { BufferWriter, type BufferEntry } from './writers/index.js';
|
|
378
|
+
export type { OutputWriter, OutputMode } from './types/core.js';
|
package/src/types/core.ts
CHANGED
|
@@ -100,6 +100,48 @@ export type ExportFormat = 'json' | 'csv' | 'markdown' | 'plain' | 'html';
|
|
|
100
100
|
*/
|
|
101
101
|
export type OutputFormat = 'auto' | 'plain' | 'ansi' | 'build' | 'ci';
|
|
102
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Output modes for controlling where logs are written
|
|
105
|
+
* @typedef {'console' | 'silent' | 'custom'} OutputMode
|
|
106
|
+
*
|
|
107
|
+
* @description
|
|
108
|
+
* - console: Standard console.log output (default)
|
|
109
|
+
* - silent: No output at all
|
|
110
|
+
* - custom: Use custom OutputWriter for advanced scenarios
|
|
111
|
+
*/
|
|
112
|
+
export type OutputMode = 'console' | 'silent' | 'custom';
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Custom output writer interface for redirecting log output
|
|
116
|
+
*
|
|
117
|
+
* @interface OutputWriter
|
|
118
|
+
* @since 4.0.0
|
|
119
|
+
*
|
|
120
|
+
* @description
|
|
121
|
+
* Allows redirecting log output to custom destinations like:
|
|
122
|
+
* - DraftLog for CLI spinners with concurrent logging
|
|
123
|
+
* - Buffers for collecting logs during operations
|
|
124
|
+
* - Custom streams or transports
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* class BufferWriter implements OutputWriter {
|
|
128
|
+
* private buffer: string[] = [];
|
|
129
|
+
*
|
|
130
|
+
* write(message: string, level: LogLevel, styles: string[]): void {
|
|
131
|
+
* this.buffer.push(message);
|
|
132
|
+
* }
|
|
133
|
+
*
|
|
134
|
+
* flush(): void {
|
|
135
|
+
* this.buffer.forEach(msg => console.log(msg));
|
|
136
|
+
* this.buffer = [];
|
|
137
|
+
* }
|
|
138
|
+
* }
|
|
139
|
+
*/
|
|
140
|
+
export interface OutputWriter {
|
|
141
|
+
write(message: string, level: LogLevel, styles: string[]): void;
|
|
142
|
+
flush?(): void;
|
|
143
|
+
}
|
|
144
|
+
|
|
103
145
|
/**
|
|
104
146
|
* Interfaz de configuración para instancias del logger
|
|
105
147
|
*
|
|
@@ -130,6 +172,10 @@ export interface LoggerConfig {
|
|
|
130
172
|
bufferSize?: number;
|
|
131
173
|
autoDetectTheme?: boolean;
|
|
132
174
|
outputFormat?: OutputFormat;
|
|
175
|
+
/** Output mode: 'console' (default), 'silent', or 'custom' @since 4.0.0 */
|
|
176
|
+
outputMode?: OutputMode;
|
|
177
|
+
/** Custom writer when outputMode is 'custom' @since 4.0.0 */
|
|
178
|
+
outputWriter?: OutputWriter;
|
|
133
179
|
}
|
|
134
180
|
|
|
135
181
|
/**
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview BufferWriter - Collects log output in memory for later use
|
|
3
|
+
* @version 4.0.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { LogLevel, OutputWriter } from '../types/core.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Entry in the log buffer
|
|
10
|
+
*/
|
|
11
|
+
export interface BufferEntry {
|
|
12
|
+
message: string;
|
|
13
|
+
level: LogLevel;
|
|
14
|
+
styles: string[];
|
|
15
|
+
timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* BufferWriter collects log messages in memory instead of outputting to console.
|
|
20
|
+
* Useful for:
|
|
21
|
+
* - CLI operations with spinners (buffer logs during spinner, show after)
|
|
22
|
+
* - Testing (capture logs for assertions)
|
|
23
|
+
* - Batch processing (collect logs, process together)
|
|
24
|
+
*
|
|
25
|
+
* @implements {OutputWriter}
|
|
26
|
+
* @since 4.0.0
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* import logger, { BufferWriter } from '@mks2508/better-logger';
|
|
30
|
+
*
|
|
31
|
+
* const buffer = new BufferWriter();
|
|
32
|
+
* logger.updateConfig({
|
|
33
|
+
* outputMode: 'custom',
|
|
34
|
+
* outputWriter: buffer
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Logs go to buffer, not console
|
|
38
|
+
* spinner.start('Loading...');
|
|
39
|
+
* logger.info('Connecting...');
|
|
40
|
+
* logger.info('Processing...');
|
|
41
|
+
* spinner.stop();
|
|
42
|
+
*
|
|
43
|
+
* // Show buffered logs
|
|
44
|
+
* logger.updateConfig({ outputMode: 'console' });
|
|
45
|
+
* buffer.flush(); // Outputs all buffered logs to console
|
|
46
|
+
*/
|
|
47
|
+
export class BufferWriter implements OutputWriter {
|
|
48
|
+
private buffer: BufferEntry[] = [];
|
|
49
|
+
private maxSize: number;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Creates a new BufferWriter
|
|
53
|
+
* @param maxSize - Maximum number of entries to buffer (default: 1000)
|
|
54
|
+
*/
|
|
55
|
+
constructor(maxSize: number = 1000) {
|
|
56
|
+
this.maxSize = maxSize;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Writes a log entry to the buffer
|
|
61
|
+
* @param message - Formatted log message
|
|
62
|
+
* @param level - Log level
|
|
63
|
+
* @param styles - CSS styles (for browser console)
|
|
64
|
+
*/
|
|
65
|
+
write(message: string, level: LogLevel, styles: string[]): void {
|
|
66
|
+
if (this.buffer.length >= this.maxSize) {
|
|
67
|
+
this.buffer.shift(); // Remove oldest entry
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
this.buffer.push({
|
|
71
|
+
message,
|
|
72
|
+
level,
|
|
73
|
+
styles,
|
|
74
|
+
timestamp: Date.now()
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Returns all buffered entries
|
|
80
|
+
* @returns Copy of the buffer array
|
|
81
|
+
*/
|
|
82
|
+
getBuffer(): BufferEntry[] {
|
|
83
|
+
return [...this.buffer];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Returns buffered entries filtered by log level
|
|
88
|
+
* @param levels - Log levels to include
|
|
89
|
+
* @returns Filtered buffer entries
|
|
90
|
+
*/
|
|
91
|
+
getByLevel(...levels: LogLevel[]): BufferEntry[] {
|
|
92
|
+
return this.buffer.filter(entry => levels.includes(entry.level));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Returns the number of buffered entries
|
|
97
|
+
*/
|
|
98
|
+
get size(): number {
|
|
99
|
+
return this.buffer.length;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Checks if buffer is empty
|
|
104
|
+
*/
|
|
105
|
+
get isEmpty(): boolean {
|
|
106
|
+
return this.buffer.length === 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Clears all buffered entries
|
|
111
|
+
*/
|
|
112
|
+
clear(): void {
|
|
113
|
+
this.buffer = [];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Outputs all buffered entries to console and clears the buffer
|
|
118
|
+
*/
|
|
119
|
+
flush(): void {
|
|
120
|
+
this.buffer.forEach(entry => {
|
|
121
|
+
if (entry.styles.length > 0) {
|
|
122
|
+
console.log(entry.message, ...entry.styles);
|
|
123
|
+
} else {
|
|
124
|
+
console.log(entry.message);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
this.clear();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Outputs buffered entries to console without clearing
|
|
132
|
+
*/
|
|
133
|
+
replay(): void {
|
|
134
|
+
this.buffer.forEach(entry => {
|
|
135
|
+
if (entry.styles.length > 0) {
|
|
136
|
+
console.log(entry.message, ...entry.styles);
|
|
137
|
+
} else {
|
|
138
|
+
console.log(entry.message);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Returns all messages as an array of strings
|
|
145
|
+
*/
|
|
146
|
+
toArray(): string[] {
|
|
147
|
+
return this.buffer.map(entry => entry.message);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Returns all messages joined as a single string
|
|
152
|
+
* @param separator - String to join messages with (default: newline)
|
|
153
|
+
*/
|
|
154
|
+
toString(separator: string = '\n'): string {
|
|
155
|
+
return this.toArray().join(separator);
|
|
156
|
+
}
|
|
157
|
+
}
|