@mks2508/better-logger 5.0.0 → 5.0.2
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/dist/chunks/{Logger-Cbi1f10o.js → Logger-CKqzXDh3.js} +2 -2
- package/dist/chunks/{Logger-Cbi1f10o.js.map → Logger-CKqzXDh3.js.map} +1 -1
- package/dist/chunks/{Logger-BZ7B7OXE.js → Logger-D_vuKP4l.js} +2 -2
- package/dist/chunks/{Logger-BZ7B7OXE.js.map → Logger-D_vuKP4l.js.map} +1 -1
- package/dist/chunks/cli-module-B-njrTWb.js +2 -0
- package/dist/chunks/cli-module-B-njrTWb.js.map +1 -0
- package/dist/chunks/{cli-module-ClIJmaT8.js → cli-module-Cx7qotPY.js} +16 -9
- package/dist/chunks/cli-module-Cx7qotPY.js.map +1 -0
- package/dist/cli.cjs +1 -1
- package/dist/cli.js +1 -1
- package/dist/exports.cjs +1 -1
- package/dist/exports.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/dist/styling.cjs +1 -1
- package/dist/styling.js +2 -2
- package/dist/terminal/formatter.d.ts.map +1 -1
- package/package.json +5 -1
- package/.claude/settings.local.json +0 -48
- package/.github/workflows/ci-quality.yml +0 -357
- package/.github/workflows/docs-demo.yml +0 -119
- package/.github/workflows/releases-core.yml +0 -512
- package/.github/workflows/releases-full.yml +0 -582
- package/.github/workflows-backup/ci.yml +0 -221
- package/.github/workflows-backup/nightly.yml +0 -196
- package/.github/workflows-backup/release-optimized.yml +0 -373
- package/.github/workflows-backup/release.yml +0 -269
- package/.release-notes-0.2.0.md +0 -129
- package/.yamllint +0 -28
- package/CHANGELOG.json +0 -1076
- package/CHANGELOG.md +0 -209
- package/CLAUDE.md +0 -217
- package/bun.lock +0 -333
- package/demo.html +0 -847
- package/dist/chunks/cli-module-CadqgZ1Z.js +0 -2
- package/dist/chunks/cli-module-CadqgZ1Z.js.map +0 -1
- package/dist/chunks/cli-module-ClIJmaT8.js.map +0 -1
- package/docs/API.md +0 -918
- package/docs/CORE.md +0 -264
- package/docs/DEVELOPMENT.md +0 -731
- package/docs/EXPORTS.md +0 -467
- package/docs/PACKAGES.md +0 -244
- package/docs/STYLING.md +0 -405
- package/docs/_config.yml +0 -36
- package/docs/index.md +0 -179
- package/examples/README.md +0 -208
- package/examples/basic-logging.js +0 -75
- package/examples/data-export.js +0 -234
- package/examples/package.json +0 -16
- package/examples/performance-timing.js +0 -170
- package/examples/simplified-api.js +0 -124
- package/examples/styling-themes.js +0 -207
- package/index.html +0 -358
- package/packages/core/package.json +0 -57
- package/packages/exports/package.json +0 -41
- package/packages/nodejs-opentui/README.md +0 -232
- package/packages/nodejs-opentui/package.json +0 -72
- package/packages/nodejs-opentui/src/LogRenderer.ts +0 -171
- package/packages/nodejs-opentui/src/OpenTUILogHandler.ts +0 -178
- package/packages/nodejs-opentui/src/components/LogBadge.tsx +0 -131
- package/packages/nodejs-opentui/src/index.ts +0 -133
- package/packages/nodejs-opentui/src/types.ts +0 -158
- package/packages/nodejs-opentui/tsconfig.json +0 -20
- package/packages/styling/package.json +0 -41
- package/playground/demo-all.ts +0 -95
- package/playground/demo-box.ts +0 -85
- package/playground/demo-levels.ts +0 -56
- package/playground/demo-real-world.ts +0 -98
- package/playground/demo-spinner.ts +0 -77
- package/playground/demo-steps.ts +0 -72
- package/playground/demo-table.ts +0 -83
- package/project-utils/README.md +0 -172
- package/project-utils/auto-release-gemini.ts +0 -1193
- package/project-utils/auto-release-ui.ts +0 -1329
- package/project-utils/commit-generator.ts +0 -1385
- package/project-utils/commit-ui.ts +0 -264
- package/project-utils/git-utils.ts +0 -199
- package/project-utils/github-release-manager.ts +0 -466
- package/project-utils/project-config.ts +0 -260
- package/project-utils/prompt-templates.js +0 -345
- package/project-utils/prompt-templates.ts +0 -422
- package/project-utils/version-manager.ts +0 -1078
- package/public/vite.svg +0 -1
- package/src/Logger.ts +0 -1858
- package/src/ScopedLogger.ts +0 -256
- package/src/cli/CommandProcessor.ts +0 -248
- package/src/cli/commands/ConfigCommand.ts +0 -93
- package/src/cli/commands/ExportCommand.ts +0 -276
- package/src/cli/commands/HistoryCommand.ts +0 -117
- package/src/cli/commands/StatusCommand.ts +0 -112
- package/src/cli/commands/ThemeCommand.ts +0 -88
- package/src/cli/help.ts +0 -127
- package/src/cli/index.ts +0 -71
- package/src/cli-module.ts +0 -21
- package/src/cli-primitives/box.ts +0 -86
- package/src/cli-primitives/cli-table.ts +0 -62
- package/src/cli-primitives/divider.ts +0 -17
- package/src/cli-primitives/header.ts +0 -18
- package/src/cli-primitives/index.ts +0 -13
- package/src/cli-primitives/server-fallback.ts +0 -54
- package/src/cli-primitives/spinner.ts +0 -133
- package/src/cli-primitives/step.ts +0 -22
- package/src/constants.ts +0 -313
- package/src/core.ts +0 -397
- package/src/example.ts +0 -210
- package/src/exports-module.ts +0 -311
- package/src/handlers/AnalyticsLogHandler.ts +0 -22
- package/src/handlers/ExportLogHandler.ts +0 -610
- package/src/handlers/FileLogHandler.ts +0 -169
- package/src/handlers/RemoteLogHandler.ts +0 -42
- package/src/handlers/index.ts +0 -8
- package/src/hooks/HookManager.ts +0 -177
- package/src/hooks/index.ts +0 -1
- package/src/index.ts +0 -395
- package/src/main.ts +0 -196
- package/src/serializers/SerializerRegistry.ts +0 -173
- package/src/serializers/index.ts +0 -1
- package/src/style.css +0 -96
- package/src/styling/LogStyleBuilder.ts +0 -355
- package/src/styling/SemanticStyles.ts +0 -380
- package/src/styling/SmartPresets.ts +0 -288
- package/src/styling/StyleBuilder.ts +0 -319
- package/src/styling/StyleCache.ts +0 -131
- package/src/styling/banners.ts +0 -168
- package/src/styling/index.ts +0 -27
- package/src/styling/themes.ts +0 -235
- package/src/styling-module.ts +0 -244
- package/src/terminal/color-converter.ts +0 -315
- package/src/terminal/formatter.ts +0 -236
- package/src/terminal/terminal-renderer.ts +0 -342
- package/src/transports/ConsoleTransport.ts +0 -28
- package/src/transports/FileTransport.ts +0 -53
- package/src/transports/HttpTransport.ts +0 -56
- package/src/transports/TransportManager.ts +0 -130
- package/src/transports/index.ts +0 -4
- package/src/types/core.ts +0 -417
- package/src/types/handlers.ts +0 -95
- package/src/types/hooks.ts +0 -45
- package/src/types/index.ts +0 -83
- package/src/types/serializers.ts +0 -30
- package/src/types/transports.ts +0 -52
- package/src/typescript.svg +0 -1
- package/src/utils/adapter.ts +0 -291
- package/src/utils/ansi-colors.ts +0 -333
- package/src/utils/environment-detector.ts +0 -170
- package/src/utils/environment.ts +0 -94
- package/src/utils/formatting.ts +0 -332
- package/src/utils/index.ts +0 -33
- package/src/utils/opentui-detection.ts +0 -138
- package/src/utils/output.ts +0 -227
- package/src/utils/stackTrace.ts +0 -144
- package/src/utils/timestamps.ts +0 -80
- package/src/vite-env.d.ts +0 -1
- package/src/writers/BufferWriter.ts +0 -157
- package/src/writers/index.ts +0 -6
- package/test-core-browser.html +0 -237
- package/test-core-node.js +0 -63
- package/tests/test-conflict-resolution.ts +0 -391
- package/tests/validate-workflows.sh +0 -131
- package/tests/yaml-autofix.sh +0 -146
- package/tsconfig.json +0 -50
- package/vite.config.ts +0 -256
package/docs/API.md
DELETED
|
@@ -1,918 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
layout: default
|
|
3
|
-
title: API Reference
|
|
4
|
-
permalink: /API/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# 🔧 API Reference
|
|
8
|
-
|
|
9
|
-
Complete API documentation for Better Logger with detailed method signatures, parameters, and examples.
|
|
10
|
-
|
|
11
|
-
## Table of Contents
|
|
12
|
-
|
|
13
|
-
- [Core Logger](#core-logger)
|
|
14
|
-
- [Enterprise Features (v3.0.0)](#enterprise-features-v300)
|
|
15
|
-
- [Custom Serializers](#custom-serializers)
|
|
16
|
-
- [Hooks & Middleware](#hooks--middleware)
|
|
17
|
-
- [Transports](#transports)
|
|
18
|
-
- [Style Builder](#style-builder)
|
|
19
|
-
- [CLI Interface](#cli-interface)
|
|
20
|
-
- [Export & Remote](#export--remote)
|
|
21
|
-
- [Types & Interfaces](#types--interfaces)
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 🚀 Core Logger
|
|
26
|
-
|
|
27
|
-
### Logger Class
|
|
28
|
-
|
|
29
|
-
The main Logger class provides all essential logging functionality.
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
32
|
-
import { Logger } from '@mks2508/better-logger';
|
|
33
|
-
|
|
34
|
-
const logger = new Logger();
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
#### Constructor Options
|
|
38
|
-
|
|
39
|
-
```typescript
|
|
40
|
-
interface LoggerOptions {
|
|
41
|
-
prefix?: string; // Default prefix for all log messages
|
|
42
|
-
level?: LogLevel; // Minimum log level to display
|
|
43
|
-
enableStackTrace?: boolean; // Include stack traces in logs
|
|
44
|
-
enablePerformance?: boolean; // Include performance timings
|
|
45
|
-
theme?: ThemeName; // Visual theme for styling
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
#### Log Levels
|
|
50
|
-
|
|
51
|
-
```typescript
|
|
52
|
-
type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'critical';
|
|
53
|
-
|
|
54
|
-
// Log level hierarchy (higher numbers = higher priority)
|
|
55
|
-
const LOG_LEVELS = {
|
|
56
|
-
debug: 0,
|
|
57
|
-
info: 1,
|
|
58
|
-
warn: 2,
|
|
59
|
-
error: 3,
|
|
60
|
-
critical: 4
|
|
61
|
-
} as const;
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Basic Logging Methods
|
|
65
|
-
|
|
66
|
-
#### `logger.debug(message, ...args)`
|
|
67
|
-
Low-priority debugging information.
|
|
68
|
-
```typescript
|
|
69
|
-
logger.debug('Variable value:', { userId: 123 });
|
|
70
|
-
// Output: [DEBUG] Variable value: { userId: 123 }
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
#### `logger.info(message, ...args)`
|
|
74
|
-
General informational messages.
|
|
75
|
-
```typescript
|
|
76
|
-
logger.info('User logged in', { username: 'john_doe' });
|
|
77
|
-
// Output: [INFO] User logged in { username: 'john_doe' }
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
#### `logger.warn(message, ...args)`
|
|
81
|
-
Warning messages for potential issues.
|
|
82
|
-
```typescript
|
|
83
|
-
logger.warn('API rate limit approaching', { remaining: 10 });
|
|
84
|
-
// Output: [WARN] API rate limit approaching { remaining: 10 }
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
#### `logger.error(message, ...args)`
|
|
88
|
-
Error messages for failures.
|
|
89
|
-
```typescript
|
|
90
|
-
logger.error('Database connection failed', { error: 'ECONNREFUSED' });
|
|
91
|
-
// Output: [ERROR] Database connection failed { error: 'ECONNREFUSED' }
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
#### `logger.critical(message, ...args)`
|
|
95
|
-
Critical system failures requiring immediate attention.
|
|
96
|
-
```typescript
|
|
97
|
-
logger.critical('System memory exhausted', { usage: '95%' });
|
|
98
|
-
// Output: [CRITICAL] System memory exhausted { usage: '95%' }
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Advanced Logging Methods
|
|
102
|
-
|
|
103
|
-
#### `logger.success(message, ...args)`
|
|
104
|
-
Success notifications with green styling.
|
|
105
|
-
```typescript
|
|
106
|
-
logger.success('Payment processed successfully', { orderId: 'ORD-123' });
|
|
107
|
-
// Output: [SUCCESS] Payment processed successfully { orderId: 'ORD-123' }
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
#### `logger.table(data, options?)`
|
|
111
|
-
Display data in formatted table.
|
|
112
|
-
```typescript
|
|
113
|
-
const users = [
|
|
114
|
-
{ id: 1, name: 'John', email: 'john@example.com' },
|
|
115
|
-
{ id: 2, name: 'Jane', email: 'jane@example.com' }
|
|
116
|
-
];
|
|
117
|
-
|
|
118
|
-
logger.table(users);
|
|
119
|
-
// Displays formatted table in console
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
#### `logger.group(label, callback?)`
|
|
123
|
-
Group related log messages.
|
|
124
|
-
```typescript
|
|
125
|
-
logger.group('User Authentication', () => {
|
|
126
|
-
logger.info('Checking credentials...');
|
|
127
|
-
logger.info('Validating token...');
|
|
128
|
-
logger.success('Authentication successful');
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
// Or manual grouping
|
|
132
|
-
logger.group('Database Operations');
|
|
133
|
-
logger.info('Connecting to database...');
|
|
134
|
-
logger.info('Running migration...');
|
|
135
|
-
logger.groupEnd();
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Performance Timing
|
|
139
|
-
|
|
140
|
-
#### `logger.time(label)`
|
|
141
|
-
Start timing operation.
|
|
142
|
-
```typescript
|
|
143
|
-
logger.time('api-call');
|
|
144
|
-
await fetchUserData();
|
|
145
|
-
logger.timeEnd('api-call');
|
|
146
|
-
// Output: [TIMING] api-call: 245.67ms
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
#### `logger.timeEnd(label)`
|
|
150
|
-
End timing and display duration.
|
|
151
|
-
|
|
152
|
-
#### `logger.timeLog(label, ...args)`
|
|
153
|
-
Log intermediate timing without ending timer.
|
|
154
|
-
```typescript
|
|
155
|
-
logger.time('long-operation');
|
|
156
|
-
await step1();
|
|
157
|
-
logger.timeLog('long-operation', 'Step 1 complete');
|
|
158
|
-
await step2();
|
|
159
|
-
logger.timeEnd('long-operation');
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### Scoped Loggers
|
|
163
|
-
|
|
164
|
-
Create loggers with persistent prefixes for different modules.
|
|
165
|
-
|
|
166
|
-
```typescript
|
|
167
|
-
const apiLogger = logger.scope('API');
|
|
168
|
-
const dbLogger = logger.scope('DATABASE');
|
|
169
|
-
|
|
170
|
-
apiLogger.info('Making HTTP request'); // [API] [INFO] Making HTTP request
|
|
171
|
-
dbLogger.error('Connection timeout'); // [DATABASE] [ERROR] Connection timeout
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Log Handlers
|
|
175
|
-
|
|
176
|
-
Add custom handlers for log processing.
|
|
177
|
-
|
|
178
|
-
```typescript
|
|
179
|
-
import { FileLogHandler, RemoteLogHandler } from '@mks2508/better-logger';
|
|
180
|
-
|
|
181
|
-
// File logging
|
|
182
|
-
logger.addHandler(new FileLogHandler('/path/to/logs.txt'));
|
|
183
|
-
|
|
184
|
-
// Remote logging
|
|
185
|
-
logger.addHandler(new RemoteLogHandler('https://api.logging-service.com'));
|
|
186
|
-
|
|
187
|
-
// Custom handler
|
|
188
|
-
logger.addHandler({
|
|
189
|
-
handle(entry) {
|
|
190
|
-
// Process log entry
|
|
191
|
-
console.log('Custom handler:', entry);
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## 🔄 Enterprise Features (v3.0.0)
|
|
199
|
-
|
|
200
|
-
### Custom Serializers
|
|
201
|
-
|
|
202
|
-
Transform objects before logging with type-based serializers.
|
|
203
|
-
|
|
204
|
-
#### `logger.addSerializer(type, serializer, priority?)`
|
|
205
|
-
Register a serializer for a specific type.
|
|
206
|
-
|
|
207
|
-
```typescript
|
|
208
|
-
// Serialize Error objects
|
|
209
|
-
logger.addSerializer(Error, (err) => ({
|
|
210
|
-
name: err.name,
|
|
211
|
-
message: err.message,
|
|
212
|
-
stack: err.stack?.split('\n').slice(0, 5)
|
|
213
|
-
}));
|
|
214
|
-
|
|
215
|
-
// Serialize User objects (omit sensitive data)
|
|
216
|
-
logger.addSerializer(User, (user) => ({
|
|
217
|
-
id: user.id,
|
|
218
|
-
email: user.email
|
|
219
|
-
// password automatically omitted
|
|
220
|
-
}), 100); // higher priority
|
|
221
|
-
|
|
222
|
-
// Now objects are serialized automatically
|
|
223
|
-
logger.error('Failed:', new Error('Connection timeout'));
|
|
224
|
-
logger.info('User:', currentUser);
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
#### `logger.removeSerializer(type)`
|
|
228
|
-
Remove a registered serializer.
|
|
229
|
-
|
|
230
|
-
```typescript
|
|
231
|
-
logger.removeSerializer(Error);
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
#### `logger.getSerializerRegistry()`
|
|
235
|
-
Access the SerializerRegistry for advanced operations.
|
|
236
|
-
|
|
237
|
-
```typescript
|
|
238
|
-
const registry = logger.getSerializerRegistry();
|
|
239
|
-
const serialized = registry.serialize(complexObject);
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### Hooks & Middleware
|
|
243
|
-
|
|
244
|
-
Intercept and modify log entries with hooks and middleware.
|
|
245
|
-
|
|
246
|
-
#### `logger.on(event, callback, priority?)`
|
|
247
|
-
Register a hook for an event. Returns unsubscribe function.
|
|
248
|
-
|
|
249
|
-
```typescript
|
|
250
|
-
// Add correlation ID to all logs
|
|
251
|
-
const unsubscribe = logger.on('beforeLog', (entry) => {
|
|
252
|
-
entry.correlationId = getCorrelationId();
|
|
253
|
-
return entry; // Return modified entry
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
// Track metrics after logging
|
|
257
|
-
logger.on('afterLog', (entry) => {
|
|
258
|
-
metrics.increment(`logs.${entry.level}`);
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
// Handle errors
|
|
262
|
-
logger.on('onError', (entry) => {
|
|
263
|
-
alertSystem.notify(entry.message);
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
// Unsubscribe when done
|
|
267
|
-
unsubscribe();
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
#### `logger.once(event, callback, priority?)`
|
|
271
|
-
Register a hook that fires only once.
|
|
272
|
-
|
|
273
|
-
```typescript
|
|
274
|
-
logger.once('beforeLog', (entry) => {
|
|
275
|
-
console.log('First log entry:', entry.message);
|
|
276
|
-
});
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
#### `logger.off(event, callback)`
|
|
280
|
-
Remove a registered hook.
|
|
281
|
-
|
|
282
|
-
```typescript
|
|
283
|
-
const myHook = (entry) => { /* ... */ };
|
|
284
|
-
logger.on('beforeLog', myHook);
|
|
285
|
-
// Later...
|
|
286
|
-
logger.off('beforeLog', myHook);
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
#### `logger.use(middleware, priority?)`
|
|
290
|
-
Add middleware to the processing pipeline.
|
|
291
|
-
|
|
292
|
-
```typescript
|
|
293
|
-
// Add request context
|
|
294
|
-
logger.use((entry, next) => {
|
|
295
|
-
entry.requestId = asyncLocalStorage.getStore()?.requestId;
|
|
296
|
-
next(); // Continue to next middleware
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
// Redact sensitive data
|
|
300
|
-
logger.use((entry, next) => {
|
|
301
|
-
entry.message = entry.message.replace(/password=\S+/g, 'password=***');
|
|
302
|
-
next();
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
// Middleware with priority (higher = runs first)
|
|
306
|
-
logger.use((entry, next) => {
|
|
307
|
-
entry.timestamp = new Date().toISOString();
|
|
308
|
-
next();
|
|
309
|
-
}, 100);
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
#### Hook Events
|
|
313
|
-
|
|
314
|
-
| Event | Description | Can Modify Entry |
|
|
315
|
-
|-------|-------------|------------------|
|
|
316
|
-
| `beforeLog` | Before log is processed | Yes |
|
|
317
|
-
| `afterLog` | After log is output | No |
|
|
318
|
-
| `onError` | When an error occurs | No |
|
|
319
|
-
|
|
320
|
-
### Transports
|
|
321
|
-
|
|
322
|
-
Send logs to multiple destinations with the transport system.
|
|
323
|
-
|
|
324
|
-
#### `logger.addTransport(target)`
|
|
325
|
-
Add a transport destination. Returns transport ID.
|
|
326
|
-
|
|
327
|
-
```typescript
|
|
328
|
-
// Built-in file transport (Node.js)
|
|
329
|
-
const fileId = logger.addTransport({
|
|
330
|
-
target: 'file',
|
|
331
|
-
options: { destination: '/var/log/app.log' }
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
// Built-in HTTP transport with batching
|
|
335
|
-
const httpId = logger.addTransport({
|
|
336
|
-
target: 'http',
|
|
337
|
-
options: {
|
|
338
|
-
url: 'https://logs.example.com/ingest',
|
|
339
|
-
headers: { 'Authorization': 'Bearer token' },
|
|
340
|
-
batchSize: 100, // Send in batches of 100
|
|
341
|
-
flushInterval: 5000 // Or every 5 seconds
|
|
342
|
-
},
|
|
343
|
-
level: 'warn' // Only warn and above
|
|
344
|
-
});
|
|
345
|
-
|
|
346
|
-
// Built-in console transport
|
|
347
|
-
logger.addTransport({
|
|
348
|
-
target: 'console'
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
// Custom transport
|
|
352
|
-
logger.addTransport({
|
|
353
|
-
target: {
|
|
354
|
-
name: 'elasticsearch',
|
|
355
|
-
write: async (record) => {
|
|
356
|
-
await esClient.index({
|
|
357
|
-
index: 'logs',
|
|
358
|
-
body: record
|
|
359
|
-
});
|
|
360
|
-
},
|
|
361
|
-
flush: async () => {
|
|
362
|
-
await esClient.indices.refresh({ index: 'logs' });
|
|
363
|
-
},
|
|
364
|
-
close: async () => {
|
|
365
|
-
await esClient.close();
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
#### `logger.removeTransport(id)`
|
|
372
|
-
Remove a transport by ID.
|
|
373
|
-
|
|
374
|
-
```typescript
|
|
375
|
-
logger.removeTransport(fileId);
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
#### `logger.flushTransports()`
|
|
379
|
-
Force flush all transport buffers.
|
|
380
|
-
|
|
381
|
-
```typescript
|
|
382
|
-
await logger.flushTransports();
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
#### `logger.closeTransports()`
|
|
386
|
-
Close all transports (flush + cleanup).
|
|
387
|
-
|
|
388
|
-
```typescript
|
|
389
|
-
// Before application shutdown
|
|
390
|
-
await logger.closeTransports();
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
#### Transport Record Structure
|
|
394
|
-
|
|
395
|
-
```typescript
|
|
396
|
-
interface TransportRecord {
|
|
397
|
-
level: LogLevel;
|
|
398
|
-
levelValue: number; // 0-4
|
|
399
|
-
time: number; // Unix timestamp
|
|
400
|
-
msg: string;
|
|
401
|
-
prefix?: string;
|
|
402
|
-
location?: {
|
|
403
|
-
file: string;
|
|
404
|
-
line: number;
|
|
405
|
-
column: number;
|
|
406
|
-
function?: string;
|
|
407
|
-
};
|
|
408
|
-
}
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
#### Built-in Transports
|
|
412
|
-
|
|
413
|
-
| Transport | Description | Options |
|
|
414
|
-
|-----------|-------------|---------|
|
|
415
|
-
| `console` | Console output | - |
|
|
416
|
-
| `file` | File logging (Node.js) | `destination`, `batchSize`, `flushInterval` |
|
|
417
|
-
| `http` | HTTP/HTTPS endpoint | `url`, `headers`, `batchSize`, `flushInterval` |
|
|
418
|
-
|
|
419
|
-
---
|
|
420
|
-
|
|
421
|
-
## 🎨 Style Builder
|
|
422
|
-
|
|
423
|
-
Create custom console styles programmatically.
|
|
424
|
-
|
|
425
|
-
```typescript
|
|
426
|
-
import { createStyle, StyleBuilder } from '@mks2508/better-logger/styling';
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
### Creating Styles
|
|
430
|
-
|
|
431
|
-
#### `createStyle()`
|
|
432
|
-
Returns new StyleBuilder instance.
|
|
433
|
-
|
|
434
|
-
```typescript
|
|
435
|
-
const customStyle = createStyle()
|
|
436
|
-
.bg('linear-gradient(45deg, #ff6b6b, #feca57)')
|
|
437
|
-
.color('white')
|
|
438
|
-
.padding('10px 20px')
|
|
439
|
-
.rounded('8px')
|
|
440
|
-
.bold()
|
|
441
|
-
.build();
|
|
442
|
-
|
|
443
|
-
console.log('%cCustom Message', customStyle);
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
### StyleBuilder Methods
|
|
447
|
-
|
|
448
|
-
#### Background Methods
|
|
449
|
-
```typescript
|
|
450
|
-
.bg(gradient: string) // Background gradient
|
|
451
|
-
.backgroundColor(color: string) // Solid background color
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
#### Typography Methods
|
|
455
|
-
```typescript
|
|
456
|
-
.color(color: string) // Text color
|
|
457
|
-
.font(family: string) // Font family
|
|
458
|
-
.fontSize(size: string) // Font size
|
|
459
|
-
.bold() // Bold text
|
|
460
|
-
.italic() // Italic text
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
#### Layout Methods
|
|
464
|
-
```typescript
|
|
465
|
-
.padding(padding: string) // CSS padding
|
|
466
|
-
.margin(margin: string) // CSS margin
|
|
467
|
-
.display(display: string) // CSS display property
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
#### Visual Effects
|
|
471
|
-
```typescript
|
|
472
|
-
.border(border: string) // CSS border
|
|
473
|
-
.rounded(radius: string) // Border radius
|
|
474
|
-
.shadow(shadow: string) // Box shadow
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
#### Animations
|
|
478
|
-
```typescript
|
|
479
|
-
.animation(animation: string) // CSS animation
|
|
480
|
-
.transition(transition: string) // CSS transition
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
#### Custom Properties
|
|
484
|
-
```typescript
|
|
485
|
-
.css(property: string, value: string) // Custom CSS property
|
|
486
|
-
```
|
|
487
|
-
|
|
488
|
-
### Style Presets
|
|
489
|
-
|
|
490
|
-
Pre-built styles for common use cases.
|
|
491
|
-
|
|
492
|
-
```typescript
|
|
493
|
-
import { stylePresets } from '@mks2508/better-logger/styling';
|
|
494
|
-
|
|
495
|
-
console.log('%c✅ Success!', stylePresets.success);
|
|
496
|
-
console.log('%c❌ Error!', stylePresets.error);
|
|
497
|
-
console.log('%c⚠️ Warning!', stylePresets.warning);
|
|
498
|
-
console.log('%cℹ️ Info', stylePresets.info);
|
|
499
|
-
console.log('%c🎯 Accent', stylePresets.accent);
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
---
|
|
503
|
-
|
|
504
|
-
## 💻 CLI Interface
|
|
505
|
-
|
|
506
|
-
Enhanced interactive command-line interface with plugin support, command history, and intelligent suggestions.
|
|
507
|
-
|
|
508
|
-
### 🔌 Plugin System
|
|
509
|
-
|
|
510
|
-
Extend CLI functionality with custom plugins:
|
|
511
|
-
|
|
512
|
-
```typescript
|
|
513
|
-
import { logger } from '@mks2508/better-logger';
|
|
514
|
-
|
|
515
|
-
// Create a custom plugin
|
|
516
|
-
const analyticsPlugin = {
|
|
517
|
-
name: 'analytics',
|
|
518
|
-
version: '1.0.0',
|
|
519
|
-
description: 'Analytics tracking commands',
|
|
520
|
-
commands: [{
|
|
521
|
-
name: 'track',
|
|
522
|
-
description: 'Track user events',
|
|
523
|
-
usage: '/track <event> <data>',
|
|
524
|
-
category: 'analytics',
|
|
525
|
-
aliases: ['t'],
|
|
526
|
-
execute: (args, logger) => {
|
|
527
|
-
const [event, ...data] = args.split(' ');
|
|
528
|
-
logger.info(`📊 Tracking: ${event}`, data.join(' '));
|
|
529
|
-
}
|
|
530
|
-
}]
|
|
531
|
-
};
|
|
532
|
-
|
|
533
|
-
// Register the plugin
|
|
534
|
-
logger.cliProcessor.registerPlugin(analyticsPlugin, logger);
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
### 🌐 Interactive Mode
|
|
538
|
-
|
|
539
|
-
Enter interactive mode for streamlined browser console usage:
|
|
540
|
-
|
|
541
|
-
```typescript
|
|
542
|
-
// Enter interactive mode
|
|
543
|
-
logger.executeCommand('/interactive');
|
|
544
|
-
|
|
545
|
-
// Now use commands directly:
|
|
546
|
-
cli('help'); // Instead of logger.executeCommand('/help')
|
|
547
|
-
cli('theme matrix'); // Change theme interactively
|
|
548
|
-
cli('history 5'); // Show last 5 commands
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
### 📋 Enhanced Commands
|
|
552
|
-
|
|
553
|
-
#### Core Commands
|
|
554
|
-
|
|
555
|
-
##### `/help`
|
|
556
|
-
Display help information and available commands.
|
|
557
|
-
```typescript
|
|
558
|
-
logger.executeCommand('/help');
|
|
559
|
-
```
|
|
560
|
-
|
|
561
|
-
##### `/config`
|
|
562
|
-
Show current logger configuration.
|
|
563
|
-
```typescript
|
|
564
|
-
logger.executeCommand('/config');
|
|
565
|
-
// Displays: Theme: default, Level: info, Stack traces: enabled
|
|
566
|
-
```
|
|
567
|
-
|
|
568
|
-
##### `/history [limit]` | Aliases: `/hist`, `/h`
|
|
569
|
-
View command execution history with success/failure status.
|
|
570
|
-
```typescript
|
|
571
|
-
logger.executeCommand('/history 10'); // Show last 10 commands
|
|
572
|
-
logger.executeCommand('/hist'); // Show default (10) recent commands
|
|
573
|
-
// ✅ [14:32:15] /theme matrix
|
|
574
|
-
// ❌ [14:31:45] /invalid-command
|
|
575
|
-
// ✅ [14:30:22] /export csv
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
##### `/clearhistory` | Aliases: `/clrhist`
|
|
579
|
-
Clear all command history.
|
|
580
|
-
```typescript
|
|
581
|
-
logger.executeCommand('/clearhistory');
|
|
582
|
-
// 🗑️ Command history cleared
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
##### `/interactive` | Aliases: `/i`, `/repl`
|
|
586
|
-
Enter interactive CLI mode for browser console.
|
|
587
|
-
```typescript
|
|
588
|
-
logger.executeCommand('/interactive');
|
|
589
|
-
// 🔧 Interactive CLI mode activated. Type /exit to quit, /help for commands.
|
|
590
|
-
// 💡 Use cli("command") to execute CLI commands in browser console.
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
##### `/plugins` | Aliases: `/plug`
|
|
594
|
-
List all registered plugins and their commands.
|
|
595
|
-
```typescript
|
|
596
|
-
logger.executeCommand('/plugins');
|
|
597
|
-
// 🔌 Loaded plugins (2):
|
|
598
|
-
// 📦 analytics v1.0.0 - Analytics tracking commands
|
|
599
|
-
// Commands: track, event
|
|
600
|
-
// 📦 performance v2.1.0 - Performance monitoring tools
|
|
601
|
-
// Commands: benchmark, profile
|
|
602
|
-
```
|
|
603
|
-
|
|
604
|
-
#### `/theme [name]`
|
|
605
|
-
Change visual theme.
|
|
606
|
-
```typescript
|
|
607
|
-
/theme cyberpunk
|
|
608
|
-
// Switches to cyberpunk theme with purple/pink colors
|
|
609
|
-
```
|
|
610
|
-
|
|
611
|
-
Available themes: `default`, `dark`, `neon`, `cyberpunk`, `retro`
|
|
612
|
-
|
|
613
|
-
#### `/banner [type]`
|
|
614
|
-
Set banner display type.
|
|
615
|
-
```typescript
|
|
616
|
-
/banner animated
|
|
617
|
-
// Shows animated gradient banner
|
|
618
|
-
```
|
|
619
|
-
|
|
620
|
-
Banner types: `simple`, `ascii`, `unicode`, `svg`, `animated`
|
|
621
|
-
|
|
622
|
-
#### `/clear`
|
|
623
|
-
Clear console and reset log buffer.
|
|
624
|
-
|
|
625
|
-
#### `/export [format]`
|
|
626
|
-
Export logs in specified format.
|
|
627
|
-
```typescript
|
|
628
|
-
/export json
|
|
629
|
-
// Exports current logs as JSON
|
|
630
|
-
```
|
|
631
|
-
|
|
632
|
-
#### `/status`
|
|
633
|
-
Show logger status and statistics.
|
|
634
|
-
|
|
635
|
-
#### `/enumerate`
|
|
636
|
-
List all available features and capabilities.
|
|
637
|
-
|
|
638
|
-
### CLI Integration
|
|
639
|
-
|
|
640
|
-
```typescript
|
|
641
|
-
import { initializeCLI } from '@mks2508/better-logger/cli';
|
|
642
|
-
|
|
643
|
-
// Initialize CLI with logger instance
|
|
644
|
-
initializeCLI(logger);
|
|
645
|
-
|
|
646
|
-
// CLI commands are now available in console
|
|
647
|
-
// Type /help to see available commands
|
|
648
|
-
```
|
|
649
|
-
|
|
650
|
-
---
|
|
651
|
-
|
|
652
|
-
## 📤 Export & Remote
|
|
653
|
-
|
|
654
|
-
Data export and remote logging capabilities.
|
|
655
|
-
|
|
656
|
-
```typescript
|
|
657
|
-
import { ExportLogger } from '@mks2508/better-logger/exports';
|
|
658
|
-
```
|
|
659
|
-
|
|
660
|
-
### ExportLogger Class
|
|
661
|
-
|
|
662
|
-
Extended logger with export and remote capabilities.
|
|
663
|
-
|
|
664
|
-
```typescript
|
|
665
|
-
const logger = new ExportLogger({
|
|
666
|
-
bufferSize: 1000,
|
|
667
|
-
remoteBatch: {
|
|
668
|
-
size: 10,
|
|
669
|
-
interval: 5000
|
|
670
|
-
}
|
|
671
|
-
});
|
|
672
|
-
```
|
|
673
|
-
|
|
674
|
-
#### Constructor Options
|
|
675
|
-
```typescript
|
|
676
|
-
interface ExportLoggerConfig {
|
|
677
|
-
bufferSize?: number; // Log buffer size
|
|
678
|
-
bufferMode?: 'circular' | 'grow'; // Buffer behavior
|
|
679
|
-
persistBuffer?: boolean; // Save to localStorage
|
|
680
|
-
remoteBatch?: { // Remote batching config
|
|
681
|
-
size: number;
|
|
682
|
-
interval: number;
|
|
683
|
-
maxWait: number;
|
|
684
|
-
};
|
|
685
|
-
autoExport?: { // Auto-export settings
|
|
686
|
-
format: ExportFormat;
|
|
687
|
-
trigger: 'size' | 'time' | 'level';
|
|
688
|
-
threshold: number;
|
|
689
|
-
};
|
|
690
|
-
}
|
|
691
|
-
```
|
|
692
|
-
|
|
693
|
-
### Export Methods
|
|
694
|
-
|
|
695
|
-
#### `exportLogs(format, options?)`
|
|
696
|
-
Export logs in specified format.
|
|
697
|
-
|
|
698
|
-
```typescript
|
|
699
|
-
// Export as CSV
|
|
700
|
-
const csvData = await logger.exportLogs('csv', {
|
|
701
|
-
filter: { level: 'error' },
|
|
702
|
-
limit: 100
|
|
703
|
-
});
|
|
704
|
-
|
|
705
|
-
// Export as JSON with grouping
|
|
706
|
-
const jsonData = await logger.exportLogs('json', {
|
|
707
|
-
groupBy: 'level',
|
|
708
|
-
includeStackTrace: true
|
|
709
|
-
});
|
|
710
|
-
|
|
711
|
-
// Export as XML
|
|
712
|
-
const xmlData = await logger.exportLogs('xml');
|
|
713
|
-
```
|
|
714
|
-
|
|
715
|
-
#### Export Options
|
|
716
|
-
```typescript
|
|
717
|
-
interface ExportOptions {
|
|
718
|
-
filter?: {
|
|
719
|
-
level?: LogLevel | LogLevel[];
|
|
720
|
-
from?: Date | string;
|
|
721
|
-
to?: Date | string;
|
|
722
|
-
prefix?: string | string[];
|
|
723
|
-
content?: string;
|
|
724
|
-
};
|
|
725
|
-
limit?: number;
|
|
726
|
-
groupBy?: 'level' | 'prefix' | 'date';
|
|
727
|
-
includeStackTrace?: boolean;
|
|
728
|
-
minimal?: boolean;
|
|
729
|
-
}
|
|
730
|
-
```
|
|
731
|
-
|
|
732
|
-
### Remote Logging
|
|
733
|
-
|
|
734
|
-
#### `addRemoteHandler(url, options?)`
|
|
735
|
-
Add remote logging endpoint.
|
|
736
|
-
|
|
737
|
-
```typescript
|
|
738
|
-
// HTTP endpoint
|
|
739
|
-
logger.addRemoteHandler('https://api.logs.com/collect', {
|
|
740
|
-
apiKey: 'secret-key',
|
|
741
|
-
headers: { 'Content-Type': 'application/json' },
|
|
742
|
-
retries: 3
|
|
743
|
-
});
|
|
744
|
-
|
|
745
|
-
// WebSocket endpoint
|
|
746
|
-
logger.addRemoteHandler('wss://realtime.logs.com', {
|
|
747
|
-
reconnect: true,
|
|
748
|
-
maxReconnectAttempts: 5
|
|
749
|
-
});
|
|
750
|
-
```
|
|
751
|
-
|
|
752
|
-
#### Remote Handler Options
|
|
753
|
-
```typescript
|
|
754
|
-
interface RemoteHandlerOptions {
|
|
755
|
-
apiKey?: string;
|
|
756
|
-
headers?: Record<string, string>;
|
|
757
|
-
retries?: number;
|
|
758
|
-
timeout?: number;
|
|
759
|
-
reconnect?: boolean;
|
|
760
|
-
reconnectInterval?: number;
|
|
761
|
-
maxReconnectAttempts?: number;
|
|
762
|
-
filter?: (entry: LogEntry) => boolean;
|
|
763
|
-
immediate?: boolean;
|
|
764
|
-
}
|
|
765
|
-
```
|
|
766
|
-
|
|
767
|
-
---
|
|
768
|
-
|
|
769
|
-
## 📋 Types & Interfaces
|
|
770
|
-
|
|
771
|
-
### Core Types
|
|
772
|
-
|
|
773
|
-
```typescript
|
|
774
|
-
// Log levels
|
|
775
|
-
type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'critical';
|
|
776
|
-
|
|
777
|
-
// Theme names
|
|
778
|
-
type ThemeName = 'default' | 'dark' | 'neon' | 'cyberpunk' | 'retro';
|
|
779
|
-
|
|
780
|
-
// Banner types
|
|
781
|
-
type BannerType = 'simple' | 'ascii' | 'unicode' | 'svg' | 'animated';
|
|
782
|
-
|
|
783
|
-
// Export formats
|
|
784
|
-
type ExportFormat = 'csv' | 'json' | 'xml';
|
|
785
|
-
```
|
|
786
|
-
|
|
787
|
-
### Interfaces
|
|
788
|
-
|
|
789
|
-
```typescript
|
|
790
|
-
// Log entry structure
|
|
791
|
-
interface LogEntry {
|
|
792
|
-
id: string;
|
|
793
|
-
timestamp: string;
|
|
794
|
-
level: LogLevel;
|
|
795
|
-
prefix: string;
|
|
796
|
-
message: string;
|
|
797
|
-
args: any[];
|
|
798
|
-
location?: {
|
|
799
|
-
file: string;
|
|
800
|
-
line: number;
|
|
801
|
-
column: number;
|
|
802
|
-
function: string;
|
|
803
|
-
};
|
|
804
|
-
performance?: {
|
|
805
|
-
duration: number;
|
|
806
|
-
memory: NodeJS.MemoryUsage;
|
|
807
|
-
};
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
// Log handler interface
|
|
811
|
-
interface ILogHandler {
|
|
812
|
-
handle(entry: LogEntry): void | Promise<void>;
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
// Style configuration
|
|
816
|
-
interface StyleConfig {
|
|
817
|
-
emoji?: string;
|
|
818
|
-
colors?: {
|
|
819
|
-
primary: string;
|
|
820
|
-
secondary: string;
|
|
821
|
-
text: string;
|
|
822
|
-
};
|
|
823
|
-
effects?: {
|
|
824
|
-
shadow: string;
|
|
825
|
-
border: string;
|
|
826
|
-
};
|
|
827
|
-
}
|
|
828
|
-
```
|
|
829
|
-
|
|
830
|
-
---
|
|
831
|
-
|
|
832
|
-
## 🔄 Lifecycle Events
|
|
833
|
-
|
|
834
|
-
### Event Handlers
|
|
835
|
-
|
|
836
|
-
```typescript
|
|
837
|
-
// Log events
|
|
838
|
-
logger.on('log', (entry: LogEntry) => {
|
|
839
|
-
// Handle each log entry
|
|
840
|
-
});
|
|
841
|
-
|
|
842
|
-
logger.on('error', (error: Error) => {
|
|
843
|
-
// Handle logging errors
|
|
844
|
-
});
|
|
845
|
-
|
|
846
|
-
logger.on('export', (data: string, format: ExportFormat) => {
|
|
847
|
-
// Handle export completion
|
|
848
|
-
});
|
|
849
|
-
|
|
850
|
-
// Remote events
|
|
851
|
-
logger.on('remote:success', (endpoint: string, count: number) => {
|
|
852
|
-
// Handle successful remote transmission
|
|
853
|
-
});
|
|
854
|
-
|
|
855
|
-
logger.on('remote:error', (endpoint: string, error: Error) => {
|
|
856
|
-
// Handle remote logging errors
|
|
857
|
-
});
|
|
858
|
-
```
|
|
859
|
-
|
|
860
|
-
### Buffer Events
|
|
861
|
-
|
|
862
|
-
```typescript
|
|
863
|
-
logger.on('buffer:full', (size: number) => {
|
|
864
|
-
// Handle buffer capacity reached
|
|
865
|
-
});
|
|
866
|
-
|
|
867
|
-
logger.on('buffer:cleared', () => {
|
|
868
|
-
// Handle buffer cleared
|
|
869
|
-
});
|
|
870
|
-
```
|
|
871
|
-
|
|
872
|
-
---
|
|
873
|
-
|
|
874
|
-
## 📚 Advanced Usage
|
|
875
|
-
|
|
876
|
-
### Performance Monitoring
|
|
877
|
-
|
|
878
|
-
```typescript
|
|
879
|
-
// Automatic performance tracking
|
|
880
|
-
logger.time('operation');
|
|
881
|
-
await performOperation();
|
|
882
|
-
const metrics = logger.timeEnd('operation'); // Returns timing data
|
|
883
|
-
|
|
884
|
-
// Memory usage tracking
|
|
885
|
-
logger.logMemory('checkpoint-1');
|
|
886
|
-
await heavyOperation();
|
|
887
|
-
logger.logMemory('checkpoint-2');
|
|
888
|
-
```
|
|
889
|
-
|
|
890
|
-
### Conditional Logging
|
|
891
|
-
|
|
892
|
-
```typescript
|
|
893
|
-
// Environment-based logging
|
|
894
|
-
logger.setLevel(process.env.NODE_ENV === 'production' ? 'warn' : 'debug');
|
|
895
|
-
|
|
896
|
-
// Conditional handlers
|
|
897
|
-
if (process.env.ENABLE_FILE_LOGGING === 'true') {
|
|
898
|
-
logger.addHandler(new FileLogHandler('./app.log'));
|
|
899
|
-
}
|
|
900
|
-
```
|
|
901
|
-
|
|
902
|
-
### Custom Formatters
|
|
903
|
-
|
|
904
|
-
```typescript
|
|
905
|
-
// Custom message formatting
|
|
906
|
-
logger.setFormatter((entry: LogEntry) => {
|
|
907
|
-
return `[${entry.timestamp}] ${entry.level.toUpperCase()}: ${entry.message}`;
|
|
908
|
-
});
|
|
909
|
-
|
|
910
|
-
// Custom data serialization
|
|
911
|
-
logger.setSerializer((data: any) => {
|
|
912
|
-
return JSON.stringify(data, null, 2);
|
|
913
|
-
});
|
|
914
|
-
```
|
|
915
|
-
|
|
916
|
-
---
|
|
917
|
-
|
|
918
|
-
For more examples and use cases, see the [examples folder](../examples/) and [live demo](https://mks2508.github.io/advanced-logger/).
|