@x12i/logxer 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/LICENSE +21 -0
- package/README.md +1255 -0
- package/dist/app-info.d.ts +25 -0
- package/dist/app-info.d.ts.map +1 -0
- package/dist/app-info.js +179 -0
- package/dist/app-info.js.map +1 -0
- package/dist/formatters/table-formatter.d.ts +23 -0
- package/dist/formatters/table-formatter.d.ts.map +1 -0
- package/dist/formatters/table-formatter.js +218 -0
- package/dist/formatters/table-formatter.js.map +1 -0
- package/dist/formatters/yaml-formatter.d.ts +14 -0
- package/dist/formatters/yaml-formatter.d.ts.map +1 -0
- package/dist/formatters/yaml-formatter.js +164 -0
- package/dist/formatters/yaml-formatter.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +219 -0
- package/dist/index.js.map +1 -0
- package/dist/logxer.d.ts +145 -0
- package/dist/logxer.d.ts.map +1 -0
- package/dist/logxer.js +811 -0
- package/dist/logxer.js.map +1 -0
- package/dist/outputs/shadow-sink.d.ts +83 -0
- package/dist/outputs/shadow-sink.d.ts.map +1 -0
- package/dist/outputs/shadow-sink.js +380 -0
- package/dist/outputs/shadow-sink.js.map +1 -0
- package/dist/outputs/unified-logger-output.d.ts +30 -0
- package/dist/outputs/unified-logger-output.d.ts.map +1 -0
- package/dist/outputs/unified-logger-output.js +125 -0
- package/dist/outputs/unified-logger-output.js.map +1 -0
- package/dist/sanitizer.d.ts +69 -0
- package/dist/sanitizer.d.ts.map +1 -0
- package/dist/sanitizer.js +507 -0
- package/dist/sanitizer.js.map +1 -0
- package/dist/trails/headers.d.ts +21 -0
- package/dist/trails/headers.d.ts.map +1 -0
- package/dist/trails/headers.js +121 -0
- package/dist/trails/headers.js.map +1 -0
- package/dist/trails/index.d.ts +59 -0
- package/dist/trails/index.d.ts.map +1 -0
- package/dist/trails/index.js +197 -0
- package/dist/trails/index.js.map +1 -0
- package/dist/types.d.ts +411 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/debug-config.d.ts +19 -0
- package/dist/utils/debug-config.d.ts.map +1 -0
- package/dist/utils/debug-config.js +172 -0
- package/dist/utils/debug-config.js.map +1 -0
- package/dist/utils/package-logs-level.d.ts +40 -0
- package/dist/utils/package-logs-level.d.ts.map +1 -0
- package/dist/utils/package-logs-level.js +79 -0
- package/dist/utils/package-logs-level.js.map +1 -0
- package/docs/package-usage.md +155 -0
- package/docs/package.md +48 -0
- package/docs/upgrade-for-package-authors.md +85 -0
- package/package.json +98 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* logxer - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* This file exports all public APIs and provides the main factory function.
|
|
5
|
+
*/
|
|
6
|
+
export type { LogLevel, LogFormat, LoggingConfig, SanitizationConfig, CustomLogxer, LogxerPackageConfig, LogEntry, InternalLoggingConfig, LogMeta, RoutingMeta, UnifiedLoggerConfig, UnifiedLoggerTransports, ShadowConfig, ShadowController } from './types';
|
|
7
|
+
export { Logxer } from './logxer';
|
|
8
|
+
import { Logxer } from './logxer';
|
|
9
|
+
import type { LogxerPackageConfig, LoggingConfig } from './types';
|
|
10
|
+
export { parsePackageLogsLevelString, resolvePackageLogsLevel, packageLogsLevelEnvKey, legacyPackageLogLevelEnvKey } from './utils/package-logs-level';
|
|
11
|
+
export type { ResolvePackageLogsLevelOptions } from './utils/package-logs-level';
|
|
12
|
+
/**
|
|
13
|
+
* Create a package-specific logxer instance
|
|
14
|
+
*
|
|
15
|
+
* @param packageConfig - Package identification (name, env prefix, debug namespace)
|
|
16
|
+
* @param userConfig - Optional logging configuration
|
|
17
|
+
* @returns Logxer instance configured for the package
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { createLogxer } from '@x12i/logxer';
|
|
22
|
+
*
|
|
23
|
+
* // Zero-config mode (ERC 2.0): Auto-discovers from environment variables
|
|
24
|
+
* // Set MY_APP_LOGS_LEVEL (canonical) or MY_APP_LOG_LEVEL (legacy) — see docs/package-usage.md
|
|
25
|
+
* const logxer = createLogxer(
|
|
26
|
+
* { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' }
|
|
27
|
+
* );
|
|
28
|
+
*
|
|
29
|
+
* // Advanced mode: Explicit configuration
|
|
30
|
+
* const logxer = createLogxer(
|
|
31
|
+
* { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' },
|
|
32
|
+
* { logToFile: true, logFilePath: '/var/log/myapp.log' }
|
|
33
|
+
* );
|
|
34
|
+
*
|
|
35
|
+
* logxer.info('Application initialized');
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function createLogxer(packageConfig: LogxerPackageConfig, userConfig?: LoggingConfig): Logxer;
|
|
39
|
+
declare const _default: {
|
|
40
|
+
createLogxer: typeof createLogxer;
|
|
41
|
+
Logxer: typeof Logxer;
|
|
42
|
+
};
|
|
43
|
+
export default _default;
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,QAAQ,EACR,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAiF,MAAM,SAAS,CAAC;AAEjJ,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,mBAAmB,EAClC,UAAU,CAAC,EAAE,aAAa,GACzB,MAAM,CAkLR;;;;;AAGD,wBAGE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* logxer - Main Entry Point
|
|
4
|
+
*
|
|
5
|
+
* This file exports all public APIs and provides the main factory function.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.legacyPackageLogLevelEnvKey = exports.packageLogsLevelEnvKey = exports.resolvePackageLogsLevel = exports.parsePackageLogsLevelString = exports.Logxer = void 0;
|
|
9
|
+
exports.createLogxer = createLogxer;
|
|
10
|
+
// Re-export the Logxer class
|
|
11
|
+
var logxer_1 = require("./logxer");
|
|
12
|
+
Object.defineProperty(exports, "Logxer", { enumerable: true, get: function () { return logxer_1.Logxer; } });
|
|
13
|
+
// Import Logxer for the factory function
|
|
14
|
+
const logxer_2 = require("./logxer");
|
|
15
|
+
const unified_logger_output_1 = require("./outputs/unified-logger-output");
|
|
16
|
+
const yaml_formatter_1 = require("./formatters/yaml-formatter");
|
|
17
|
+
const table_formatter_1 = require("./formatters/table-formatter");
|
|
18
|
+
const app_info_1 = require("./app-info");
|
|
19
|
+
var package_logs_level_1 = require("./utils/package-logs-level");
|
|
20
|
+
Object.defineProperty(exports, "parsePackageLogsLevelString", { enumerable: true, get: function () { return package_logs_level_1.parsePackageLogsLevelString; } });
|
|
21
|
+
Object.defineProperty(exports, "resolvePackageLogsLevel", { enumerable: true, get: function () { return package_logs_level_1.resolvePackageLogsLevel; } });
|
|
22
|
+
Object.defineProperty(exports, "packageLogsLevelEnvKey", { enumerable: true, get: function () { return package_logs_level_1.packageLogsLevelEnvKey; } });
|
|
23
|
+
Object.defineProperty(exports, "legacyPackageLogLevelEnvKey", { enumerable: true, get: function () { return package_logs_level_1.legacyPackageLogLevelEnvKey; } });
|
|
24
|
+
/**
|
|
25
|
+
* Create a package-specific logxer instance
|
|
26
|
+
*
|
|
27
|
+
* @param packageConfig - Package identification (name, env prefix, debug namespace)
|
|
28
|
+
* @param userConfig - Optional logging configuration
|
|
29
|
+
* @returns Logxer instance configured for the package
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import { createLogxer } from '@x12i/logxer';
|
|
34
|
+
*
|
|
35
|
+
* // Zero-config mode (ERC 2.0): Auto-discovers from environment variables
|
|
36
|
+
* // Set MY_APP_LOGS_LEVEL (canonical) or MY_APP_LOG_LEVEL (legacy) — see docs/package-usage.md
|
|
37
|
+
* const logxer = createLogxer(
|
|
38
|
+
* { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' }
|
|
39
|
+
* );
|
|
40
|
+
*
|
|
41
|
+
* // Advanced mode: Explicit configuration
|
|
42
|
+
* const logxer = createLogxer(
|
|
43
|
+
* { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' },
|
|
44
|
+
* { logToFile: true, logFilePath: '/var/log/myapp.log' }
|
|
45
|
+
* );
|
|
46
|
+
*
|
|
47
|
+
* logxer.info('Application initialized');
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
function createLogxer(packageConfig, userConfig) {
|
|
51
|
+
// Resolve configuration with defaults
|
|
52
|
+
const resolved = {
|
|
53
|
+
logToConsole: userConfig?.logToConsole ?? true,
|
|
54
|
+
logToFile: userConfig?.logToFile ?? false,
|
|
55
|
+
logFilePath: userConfig?.logFilePath ?? '',
|
|
56
|
+
logLevel: userConfig?.logLevel ?? 'info',
|
|
57
|
+
logFormat: userConfig?.logFormat ?? 'table', // Default to table format
|
|
58
|
+
showFullTimestamp: userConfig?.showFullTimestamp ?? false, // Default to false
|
|
59
|
+
...(userConfig?.consolePackagesShow !== undefined ? { consolePackagesShow: userConfig.consolePackagesShow } : {}),
|
|
60
|
+
...(userConfig?.consolePackagesHide !== undefined ? { consolePackagesHide: userConfig.consolePackagesHide } : {}),
|
|
61
|
+
enableUnifiedLogger: userConfig?.enableUnifiedLogger ?? false,
|
|
62
|
+
unifiedLogger: userConfig?.unifiedLogger ?? {},
|
|
63
|
+
defaultSource: userConfig?.defaultSource ?? 'application',
|
|
64
|
+
sanitization: userConfig?.sanitization ?? {},
|
|
65
|
+
customLogger: userConfig?.customLogger,
|
|
66
|
+
transports: userConfig?.transports ?? undefined,
|
|
67
|
+
tracing: userConfig?.tracing ?? undefined,
|
|
68
|
+
trails: userConfig?.trails ?? undefined,
|
|
69
|
+
schemaCheck: userConfig?.schemaCheck ?? { enabled: false },
|
|
70
|
+
shadow: userConfig?.shadow ?? undefined,
|
|
71
|
+
debugScoping: userConfig?.debugScoping ?? undefined
|
|
72
|
+
};
|
|
73
|
+
const sinks = {};
|
|
74
|
+
// Automatically detect consuming application's package name and version
|
|
75
|
+
const appInfo = (0, app_info_1.detectAppInfo)();
|
|
76
|
+
// Console sink (existing behavior)
|
|
77
|
+
// Priority order: table (default) → yaml → json → text
|
|
78
|
+
if (resolved.logToConsole) {
|
|
79
|
+
sinks.console = (level, msg, meta) => {
|
|
80
|
+
if (resolved.logFormat === 'table') {
|
|
81
|
+
// Table format (default): create envelope and output as table
|
|
82
|
+
const envelope = {
|
|
83
|
+
timestamp: new Date().toISOString(),
|
|
84
|
+
package: packageConfig.packageName,
|
|
85
|
+
level: level.toUpperCase(),
|
|
86
|
+
message: msg,
|
|
87
|
+
source: meta?.source ?? resolved.defaultSource ?? 'application',
|
|
88
|
+
...(meta && { data: meta }),
|
|
89
|
+
...(appInfo.name && { appName: appInfo.name }),
|
|
90
|
+
...(appInfo.version && { appVersion: appInfo.version }),
|
|
91
|
+
// Include other metadata fields if present
|
|
92
|
+
...(meta?.identity && { identity: meta.identity }),
|
|
93
|
+
...(meta?.correlationId && { correlationId: meta.correlationId }),
|
|
94
|
+
...(meta?.jobId && { jobId: meta.jobId }),
|
|
95
|
+
...(meta?.runId && { runId: meta.runId }),
|
|
96
|
+
...(meta?.sessionId && { sessionId: meta.sessionId }),
|
|
97
|
+
...(meta?.tags && { tags: meta.tags })
|
|
98
|
+
};
|
|
99
|
+
const showFullTimestamp = userConfig?.showFullTimestamp ?? false;
|
|
100
|
+
(0, table_formatter_1.outputLogAsTable)(envelope, showFullTimestamp);
|
|
101
|
+
}
|
|
102
|
+
else if (resolved.logFormat === 'yaml') {
|
|
103
|
+
// YAML format: create envelope and format as YAML
|
|
104
|
+
const envelope = {
|
|
105
|
+
timestamp: new Date().toISOString(),
|
|
106
|
+
package: packageConfig.packageName,
|
|
107
|
+
level: level.toUpperCase(),
|
|
108
|
+
message: msg,
|
|
109
|
+
source: meta?.source ?? resolved.defaultSource ?? 'application',
|
|
110
|
+
...(meta && { data: meta }),
|
|
111
|
+
...(appInfo.name && { appName: appInfo.name }),
|
|
112
|
+
...(appInfo.version && { appVersion: appInfo.version }),
|
|
113
|
+
// Include other metadata fields if present
|
|
114
|
+
...(meta?.identity && { identity: meta.identity }),
|
|
115
|
+
...(meta?.correlationId && { correlationId: meta.correlationId }),
|
|
116
|
+
...(meta?.tags && { tags: meta.tags }),
|
|
117
|
+
...(meta?._routing && { _routing: meta._routing })
|
|
118
|
+
};
|
|
119
|
+
console.log((0, yaml_formatter_1.formatLogEntryAsYaml)(envelope));
|
|
120
|
+
}
|
|
121
|
+
else if (resolved.logFormat === 'json') {
|
|
122
|
+
// JSON format: keep v1 JSON structure stable; add source/correlation when present
|
|
123
|
+
const payload = {
|
|
124
|
+
timestamp: new Date().toISOString(),
|
|
125
|
+
package: packageConfig.packageName,
|
|
126
|
+
level: level.toUpperCase(),
|
|
127
|
+
message: msg,
|
|
128
|
+
data: meta ? { ...meta } : undefined,
|
|
129
|
+
...(appInfo.name && { appName: appInfo.name }),
|
|
130
|
+
...(appInfo.version && { appVersion: appInfo.version }),
|
|
131
|
+
...(meta?.identity && { identity: meta.identity })
|
|
132
|
+
};
|
|
133
|
+
// Avoid nesting _routing/noise into "data" twice
|
|
134
|
+
if (meta?._routing) {
|
|
135
|
+
delete payload.data._routing;
|
|
136
|
+
}
|
|
137
|
+
console.log(JSON.stringify(payload));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// Text format: fallback
|
|
141
|
+
const ts = new Date().toISOString();
|
|
142
|
+
const src = meta?.source ? `[${meta.source}] ` : '';
|
|
143
|
+
const tail = meta ? ' ' + JSON.stringify(meta) : '';
|
|
144
|
+
// Text format from v1 preserved, with optional source
|
|
145
|
+
console.log(`[${ts}] [${packageConfig.packageName}] [${level.toUpperCase()}] ${src}${msg}${tail}`);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// File sink (existing behavior preserved)
|
|
150
|
+
// Table format is console-only, so fall back to text for file output
|
|
151
|
+
const fileFormat = resolved.logFormat === 'table' ? 'text' : resolved.logFormat;
|
|
152
|
+
if (resolved.logToFile && resolved.logFilePath) {
|
|
153
|
+
sinks.file = (level, msg, meta) => {
|
|
154
|
+
try {
|
|
155
|
+
let formatted;
|
|
156
|
+
if (fileFormat === 'json') {
|
|
157
|
+
// JSON format for file
|
|
158
|
+
const payload = {
|
|
159
|
+
timestamp: new Date().toISOString(),
|
|
160
|
+
package: packageConfig.packageName,
|
|
161
|
+
level: level.toUpperCase(),
|
|
162
|
+
message: msg,
|
|
163
|
+
data: meta ? { ...meta } : undefined,
|
|
164
|
+
...(appInfo.name && { appName: appInfo.name }),
|
|
165
|
+
...(appInfo.version && { appVersion: appInfo.version })
|
|
166
|
+
};
|
|
167
|
+
if (meta?._routing) {
|
|
168
|
+
delete payload.data._routing;
|
|
169
|
+
}
|
|
170
|
+
formatted = JSON.stringify(payload);
|
|
171
|
+
}
|
|
172
|
+
else if (fileFormat === 'yaml') {
|
|
173
|
+
// YAML format: create envelope and format as YAML
|
|
174
|
+
const envelope = {
|
|
175
|
+
timestamp: new Date().toISOString(),
|
|
176
|
+
package: packageConfig.packageName,
|
|
177
|
+
level: level.toUpperCase(),
|
|
178
|
+
message: msg,
|
|
179
|
+
source: meta?.source ?? resolved.defaultSource ?? 'application',
|
|
180
|
+
...(meta && { data: meta }),
|
|
181
|
+
...(appInfo.name && { appName: appInfo.name }),
|
|
182
|
+
...(appInfo.version && { appVersion: appInfo.version }),
|
|
183
|
+
// Include other metadata fields if present
|
|
184
|
+
...(meta?.correlationId && { correlationId: meta.correlationId }),
|
|
185
|
+
...(meta?.tags && { tags: meta.tags }),
|
|
186
|
+
...(meta?._routing && { _routing: meta._routing })
|
|
187
|
+
};
|
|
188
|
+
formatted = (0, yaml_formatter_1.formatLogEntryAsYaml)(envelope);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
// Text format (default fallback, including when table is specified)
|
|
192
|
+
const ts = new Date().toISOString();
|
|
193
|
+
const src = meta?.source ? `[${meta.source}] ` : '';
|
|
194
|
+
const tail = meta ? ' ' + JSON.stringify(meta) : '';
|
|
195
|
+
formatted = `[${ts}] [${packageConfig.packageName}] [${level.toUpperCase()}] ${src}${msg}${tail}`;
|
|
196
|
+
}
|
|
197
|
+
const dir = require('path').dirname(resolved.logFilePath);
|
|
198
|
+
if (!require('fs').existsSync(dir)) {
|
|
199
|
+
require('fs').mkdirSync(dir, { recursive: true });
|
|
200
|
+
}
|
|
201
|
+
require('fs').appendFileSync(resolved.logFilePath, formatted + '\n', 'utf8');
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
console.error(`[logs-gateway] ${packageConfig.packageName}: Failed to write to log file:`, err);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
// Unified-logger (NEW, optional)
|
|
209
|
+
if (resolved.enableUnifiedLogger) {
|
|
210
|
+
sinks.unified = new unified_logger_output_1.UnifiedLoggerOutput(resolved.unifiedLogger);
|
|
211
|
+
}
|
|
212
|
+
return new logxer_2.Logxer(packageConfig, userConfig, sinks);
|
|
213
|
+
}
|
|
214
|
+
// Default export for convenience
|
|
215
|
+
exports.default = {
|
|
216
|
+
createLogxer,
|
|
217
|
+
Logxer: logxer_2.Logxer
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logxer.d.ts
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* logxer - Core Logxer Implementation
|
|
3
|
+
*
|
|
4
|
+
* This file contains the main Logxer class that handles all logging functionality.
|
|
5
|
+
*/
|
|
6
|
+
import { LogLevel, LoggingConfig, LogxerPackageConfig, InternalLoggingConfig, LogMeta, ShadowController } from './types';
|
|
7
|
+
import { UnifiedLoggerOutput } from './outputs/unified-logger-output';
|
|
8
|
+
/**
|
|
9
|
+
* Main Logxer class for handling all logging operations
|
|
10
|
+
*/
|
|
11
|
+
export declare class Logxer {
|
|
12
|
+
private config;
|
|
13
|
+
private packageConfig;
|
|
14
|
+
private sanitizer;
|
|
15
|
+
private shadowSink?;
|
|
16
|
+
readonly shadow: ShadowController;
|
|
17
|
+
private appInfo;
|
|
18
|
+
private debugScopingConfig;
|
|
19
|
+
private levelPriority;
|
|
20
|
+
private sinks;
|
|
21
|
+
private activeBetweenRanges;
|
|
22
|
+
constructor(packageConfig: LogxerPackageConfig, userConfig?: LoggingConfig, sinks?: {
|
|
23
|
+
console?: (level: LogLevel, msg: string, meta?: LogMeta) => void;
|
|
24
|
+
file?: (level: LogLevel, msg: string, meta?: LogMeta) => void;
|
|
25
|
+
unified?: UnifiedLoggerOutput;
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Parse shadow configuration from user config and environment variables
|
|
29
|
+
*/
|
|
30
|
+
private parseShadowConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Create a no-op shadow controller for when shadow is disabled
|
|
33
|
+
*/
|
|
34
|
+
private createNoOpController;
|
|
35
|
+
/**
|
|
36
|
+
* Ensure the log directory exists, creating it if necessary
|
|
37
|
+
*/
|
|
38
|
+
private ensureLogDirectory;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a log level should be output based on current configuration
|
|
41
|
+
*/
|
|
42
|
+
private shouldLog;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a specific output should receive the log based on routing metadata
|
|
45
|
+
*/
|
|
46
|
+
private shouldSend;
|
|
47
|
+
/**
|
|
48
|
+
* Check if a search string matches any identity in a list
|
|
49
|
+
*
|
|
50
|
+
* @param searchString - The string to search for
|
|
51
|
+
* @param identityList - List of identity patterns to match against
|
|
52
|
+
* @param exactMatch - If true: exact match (case sensitive), if false: partial match (case insensitive)
|
|
53
|
+
* @returns true if any identity in the list matches
|
|
54
|
+
*/
|
|
55
|
+
private matchesIdentity;
|
|
56
|
+
/**
|
|
57
|
+
* Extract searchable text from log entry
|
|
58
|
+
* Combines message, identity, and all meta fields (recursively stringified)
|
|
59
|
+
*
|
|
60
|
+
* @param message - Log message
|
|
61
|
+
* @param identity - Log identity
|
|
62
|
+
* @param meta - Log metadata
|
|
63
|
+
* @returns Combined searchable string
|
|
64
|
+
*/
|
|
65
|
+
private getSearchableLogText;
|
|
66
|
+
/**
|
|
67
|
+
* Update the state of between ranges based on current log entry
|
|
68
|
+
*
|
|
69
|
+
* @param message - Log message
|
|
70
|
+
* @param identity - Log identity
|
|
71
|
+
* @param meta - Log metadata
|
|
72
|
+
*/
|
|
73
|
+
private updateBetweenRangeState;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a log should be included based on debug scoping configuration
|
|
76
|
+
* Filters logs at runtime based on identity and application name
|
|
77
|
+
*
|
|
78
|
+
* @param message - Log message
|
|
79
|
+
* @param identity - Log identity (file:function format)
|
|
80
|
+
* @param appName - Application name
|
|
81
|
+
* @param meta - Log metadata
|
|
82
|
+
* @returns true if log should be included, false if it should be filtered out
|
|
83
|
+
*/
|
|
84
|
+
private shouldIncludeLog;
|
|
85
|
+
/**
|
|
86
|
+
* Check if a package should be shown in console output based on filtering rules
|
|
87
|
+
* Only affects console output, not file or unified-logger
|
|
88
|
+
*/
|
|
89
|
+
private shouldShowPackageInConsole;
|
|
90
|
+
/**
|
|
91
|
+
* Get call site identity from stack trace
|
|
92
|
+
* Extracts file path and function name from the call stack
|
|
93
|
+
* Returns a clean identity string like "src/file.ts:functionName" or "src/file.ts:lineNumber"
|
|
94
|
+
*/
|
|
95
|
+
private getCallSiteIdentity;
|
|
96
|
+
/**
|
|
97
|
+
* Format a log entry according to the configured format
|
|
98
|
+
*/
|
|
99
|
+
private formatLogEntry;
|
|
100
|
+
/**
|
|
101
|
+
* Write formatted message to console
|
|
102
|
+
*/
|
|
103
|
+
private writeToConsole;
|
|
104
|
+
/**
|
|
105
|
+
* Write formatted message to log file
|
|
106
|
+
*/
|
|
107
|
+
private writeToFile;
|
|
108
|
+
/**
|
|
109
|
+
* Core logging method that handles all log output
|
|
110
|
+
*/
|
|
111
|
+
private emit;
|
|
112
|
+
/**
|
|
113
|
+
* Log verbose message (only shown when logLevel is 'verbose' or 'debug')
|
|
114
|
+
*/
|
|
115
|
+
verbose(message: string, data?: LogMeta): void;
|
|
116
|
+
/**
|
|
117
|
+
* Log debug message (only shown when logLevel is 'debug' or 'verbose')
|
|
118
|
+
*/
|
|
119
|
+
debug(message: string, data?: LogMeta): void;
|
|
120
|
+
/**
|
|
121
|
+
* Log informational message
|
|
122
|
+
*/
|
|
123
|
+
info(message: string, data?: LogMeta): void;
|
|
124
|
+
/**
|
|
125
|
+
* Log warning message
|
|
126
|
+
*/
|
|
127
|
+
warn(message: string, data?: LogMeta): void;
|
|
128
|
+
/**
|
|
129
|
+
* Log error message
|
|
130
|
+
*/
|
|
131
|
+
error(message: string, data?: LogMeta): void;
|
|
132
|
+
/**
|
|
133
|
+
* Log success message (maps to INFO level)
|
|
134
|
+
*/
|
|
135
|
+
success(message: string, data?: LogMeta): void;
|
|
136
|
+
/**
|
|
137
|
+
* Get current logxer configuration (for debugging/testing)
|
|
138
|
+
*/
|
|
139
|
+
getConfig(): Readonly<InternalLoggingConfig>;
|
|
140
|
+
/**
|
|
141
|
+
* Check if a specific log level is enabled
|
|
142
|
+
*/
|
|
143
|
+
isLevelEnabled(level: LogLevel): boolean;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=logxer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logxer.d.ts","sourceRoot":"","sources":["../src/logxer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,QAAQ,EAER,aAAa,EACb,mBAAmB,EAEnB,qBAAqB,EACrB,OAAO,EAEP,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAStE;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,aAAa,CAMnB;IACF,OAAO,CAAC,KAAK,CAIX;IACF,OAAO,CAAC,mBAAmB,CAA0B;gBAGnD,aAAa,EAAE,mBAAmB,EAClC,UAAU,CAAC,EAAE,aAAa,EAC1B,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QACjE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAC9D,OAAO,CAAC,EAAE,mBAAmB,CAAC;KAC/B;IA4IH;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAoE/B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IA2ExB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAelC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAyE3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA2DtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,IAAI;IA+GZ;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,qBAAqB,CAAC;IAI5C;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;CAGzC"}
|