hazo_logs 1.0.7 → 1.0.9
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/README.md +33 -10
- package/dist/index.d.ts +28 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -24
- package/dist/index.js.map +1 -1
- package/dist/lib/context/log-context.d.ts +3 -0
- package/dist/lib/context/log-context.d.ts.map +1 -1
- package/dist/lib/context/log-context.js +38 -2
- package/dist/lib/context/log-context.js.map +1 -1
- package/dist/lib/hazo_logger.d.ts +17 -1
- package/dist/lib/hazo_logger.d.ts.map +1 -1
- package/dist/lib/hazo_logger.js +83 -11
- package/dist/lib/hazo_logger.js.map +1 -1
- package/dist/lib/package_logger.d.ts +5 -0
- package/dist/lib/package_logger.d.ts.map +1 -1
- package/dist/lib/package_logger.js +41 -5
- package/dist/lib/package_logger.js.map +1 -1
- package/dist/lib/universal-logger.d.ts +67 -0
- package/dist/lib/universal-logger.d.ts.map +1 -0
- package/dist/lib/universal-logger.js +191 -0
- package/dist/lib/universal-logger.js.map +1 -0
- package/dist/server.d.ts +24 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +25 -0
- package/dist/server.js.map +1 -0
- package/dist/ui/server.d.ts +4 -0
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +4 -0
- package/dist/ui/server.js.map +1 -1
- package/package.json +10 -1
package/README.md
CHANGED
|
@@ -158,18 +158,35 @@ logger.error('Failed to load data', { error: err.message });
|
|
|
158
158
|
|
|
159
159
|
## Important Notes
|
|
160
160
|
|
|
161
|
-
### Server
|
|
161
|
+
### Server/Client Import Paths
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
hazo_logs provides different import paths for different environments:
|
|
164
|
+
|
|
165
|
+
| Import Path | Environment | Use Case |
|
|
166
|
+
|-------------|-------------|----------|
|
|
167
|
+
| `hazo_logs` | Universal | Basic logging (console on client, file on server) |
|
|
168
|
+
| `hazo_logs/server` | Server-only | Full logging with context, sessions, log reader |
|
|
169
|
+
| `hazo_logs/ui` | Client | React components, `createClientLogger()` |
|
|
170
|
+
| `hazo_logs/ui/server` | Server-only | API handlers for log viewer |
|
|
164
171
|
|
|
165
172
|
```typescript
|
|
166
|
-
//
|
|
173
|
+
// Universal - works everywhere (recommended for libraries)
|
|
167
174
|
import { createLogger } from 'hazo_logs';
|
|
168
175
|
|
|
169
|
-
//
|
|
176
|
+
// Server-only - full capabilities (file logging, context, sessions)
|
|
177
|
+
import { createLogger, runWithLogContext } from 'hazo_logs/server';
|
|
178
|
+
|
|
179
|
+
// Client components - sends logs to server API
|
|
170
180
|
import { createClientLogger } from 'hazo_logs/ui';
|
|
181
|
+
|
|
182
|
+
// API routes - create log viewer endpoints
|
|
183
|
+
import { createLogApiHandler } from 'hazo_logs/ui/server';
|
|
171
184
|
```
|
|
172
185
|
|
|
186
|
+
**Note**: The `hazo_logs/server` and `hazo_logs/ui/server` imports use the `server-only` package and will throw an error if accidentally imported in client bundles. This prevents Next.js build errors from Node.js APIs (`fs`, `async_hooks`) being bundled for the browser.
|
|
187
|
+
|
|
188
|
+
**Next.js 16 Turbopack Compatibility**: As of v1.0.9, hazo_logs is fully compatible with Next.js 16 Turbopack. All server-only modules are lazy-loaded to prevent static analysis issues during bundling.
|
|
189
|
+
|
|
173
190
|
### Tailwind CSS Setup Required
|
|
174
191
|
|
|
175
192
|
The log viewer UI uses dynamic Tailwind classes that would be purged during build. You **must** configure both:
|
|
@@ -207,11 +224,10 @@ export default {
|
|
|
207
224
|
|
|
208
225
|
### Session and Reference Tracking
|
|
209
226
|
|
|
210
|
-
Track logs across async operations:
|
|
227
|
+
Track logs across async operations (server-only feature):
|
|
211
228
|
|
|
212
229
|
```typescript
|
|
213
|
-
import { createLogger } from 'hazo_logs';
|
|
214
|
-
import { runWithLogContext } from 'hazo_logs';
|
|
230
|
+
import { createLogger, runWithLogContext } from 'hazo_logs/server';
|
|
215
231
|
|
|
216
232
|
const logger = createLogger('auth');
|
|
217
233
|
|
|
@@ -508,11 +524,18 @@ cp node_modules/hazo_logs/config/hazo_logs_config.example.ini config/hazo_logs_c
|
|
|
508
524
|
### Import errors in client components
|
|
509
525
|
|
|
510
526
|
```
|
|
511
|
-
Error:
|
|
512
|
-
Error:
|
|
527
|
+
Error: Module not found: Can't resolve 'async_hooks'
|
|
528
|
+
Error: Module not found: Can't resolve 'fs'
|
|
513
529
|
```
|
|
514
530
|
|
|
515
|
-
|
|
531
|
+
This error occurred in earlier versions when server-only code was imported in client components. **As of v1.0.9, this is fixed** - the library now uses lazy loading for all server-only modules, making it fully compatible with Next.js 16 Turbopack.
|
|
532
|
+
|
|
533
|
+
If you still see this error:
|
|
534
|
+
|
|
535
|
+
1. **Upgrade hazo_logs**: Run `npm update hazo_logs` to get the latest version
|
|
536
|
+
2. **For logging in client components**: Use `createClientLogger` from `hazo_logs/ui`
|
|
537
|
+
3. **For server-only modules**: Import from `hazo_logs/server` instead of `hazo_logs`
|
|
538
|
+
4. **For universal code**: The base `hazo_logs` import works on both client and server (returns console logger on client)
|
|
516
539
|
|
|
517
540
|
### hazo_ui missing errors
|
|
518
541
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,32 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* hazo_logs -
|
|
2
|
+
* hazo_logs - Universal logging library for hazo packages
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* imported in client components. For client-side logging, use:
|
|
6
|
-
* import { createClientLogger } from 'hazo_logs/ui';
|
|
4
|
+
* This root export is SAFE for both server and client environments.
|
|
7
5
|
*
|
|
8
|
-
*
|
|
9
|
-
* import { createLogger, runWithLogContext } from 'hazo_logs';
|
|
6
|
+
* ## Quick Start
|
|
10
7
|
*
|
|
11
|
-
*
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { createLogger } from 'hazo_logs';
|
|
12
10
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* const logger = createLogger('my_app');
|
|
12
|
+
* logger.info('Application started');
|
|
13
|
+
* ```
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
* runWithLogContext({ sessionId: 'sess_123', reference: 'user_42' }, () => {
|
|
18
|
-
* logger.info('User action'); // automatically includes sessionId and reference
|
|
19
|
-
* });
|
|
15
|
+
* ## Environment-Specific Imports
|
|
20
16
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
17
|
+
* ### Server-Only (full capabilities)
|
|
18
|
+
* For file logging, AsyncLocalStorage context, log reading:
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { createLogger, runWithLogContext, readLogs } from 'hazo_logs/server';
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* ### Client Components (sends logs to server API)
|
|
24
|
+
* For logging that persists to server:
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ### UI Components (log viewer)
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { LogViewerPage } from 'hazo_logs/ui';
|
|
32
|
+
* import { createLogApiHandler } from 'hazo_logs/ui/server';
|
|
33
|
+
* ```
|
|
24
34
|
*/
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
27
|
-
export { loadConfig } from './lib/config_loader.js';
|
|
28
|
-
export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
|
|
29
|
-
export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
|
|
30
|
-
export type { Logger, LogLevel, LogData, LogEntry, LogContext, HazoLogConfig, PackageLoggerOptions, } from './lib/types.js';
|
|
31
|
-
export type { ReadLogsOptions, LogQueryResult } from './lib/log-reader.js';
|
|
35
|
+
export { createLogger, createLoggerAsync, preloadServerLogger, ConsoleLogger, } from './lib/universal-logger.js';
|
|
36
|
+
export type { Logger, LogLevel, LogData, LogEntry, LogContext, HazoLogConfig, PackageLoggerOptions, LogSource, } from './lib/types.js';
|
|
32
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,33 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* hazo_logs -
|
|
2
|
+
* hazo_logs - Universal logging library for hazo packages
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* imported in client components. For client-side logging, use:
|
|
6
|
-
* import { createClientLogger } from 'hazo_logs/ui';
|
|
4
|
+
* This root export is SAFE for both server and client environments.
|
|
7
5
|
*
|
|
8
|
-
*
|
|
9
|
-
* import { createLogger, runWithLogContext } from 'hazo_logs';
|
|
6
|
+
* ## Quick Start
|
|
10
7
|
*
|
|
11
|
-
*
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { createLogger } from 'hazo_logs';
|
|
12
10
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* const logger = createLogger('my_app');
|
|
12
|
+
* logger.info('Application started');
|
|
13
|
+
* ```
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
* runWithLogContext({ sessionId: 'sess_123', reference: 'user_42' }, () => {
|
|
18
|
-
* logger.info('User action'); // automatically includes sessionId and reference
|
|
19
|
-
* });
|
|
15
|
+
* ## Environment-Specific Imports
|
|
20
16
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
17
|
+
* ### Server-Only (full capabilities)
|
|
18
|
+
* For file logging, AsyncLocalStorage context, log reading:
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { createLogger, runWithLogContext, readLogs } from 'hazo_logs/server';
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* ### Client Components (sends logs to server API)
|
|
24
|
+
* For logging that persists to server:
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ### UI Components (log viewer)
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { LogViewerPage } from 'hazo_logs/ui';
|
|
32
|
+
* import { createLogApiHandler } from 'hazo_logs/ui/server';
|
|
33
|
+
* ```
|
|
24
34
|
*/
|
|
25
|
-
//
|
|
26
|
-
export {
|
|
27
|
-
export { PackageLogger, createLogger } from './lib/package_logger.js';
|
|
28
|
-
export { loadConfig } from './lib/config_loader.js';
|
|
29
|
-
// Log context
|
|
30
|
-
export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
|
|
31
|
-
// Log reader
|
|
32
|
-
export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
|
|
35
|
+
// Universal logger - works on both server and client
|
|
36
|
+
export { createLogger, createLoggerAsync, preloadServerLogger, ConsoleLogger, } from './lib/universal-logger.js';
|
|
33
37
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,qDAAqD;AACrD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Log Context Provider
|
|
3
3
|
* Uses AsyncLocalStorage for zero-overhead context propagation
|
|
4
|
+
*
|
|
5
|
+
* This module is safe for both server and client environments.
|
|
6
|
+
* On the client, context functions are no-ops since AsyncLocalStorage is unavailable.
|
|
4
7
|
*/
|
|
5
8
|
import type { LogContext, Logger } from '../types.js';
|
|
6
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-context.d.ts","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"log-context.d.ts","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAwCtD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAeH;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAcxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,UAAU,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,SAAS,CAGtD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEnF"}
|
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Log Context Provider
|
|
3
3
|
* Uses AsyncLocalStorage for zero-overhead context propagation
|
|
4
|
+
*
|
|
5
|
+
* This module is safe for both server and client environments.
|
|
6
|
+
* On the client, context functions are no-ops since AsyncLocalStorage is unavailable.
|
|
7
|
+
*/
|
|
8
|
+
// Client-side stub implementation
|
|
9
|
+
const clientStubStorage = {
|
|
10
|
+
getStore: () => undefined,
|
|
11
|
+
run: (_store, fn) => fn(),
|
|
12
|
+
};
|
|
13
|
+
// Runtime-initialized storage (populated on server, stub on client)
|
|
14
|
+
let logContextStorage = clientStubStorage;
|
|
15
|
+
let initialized = false;
|
|
16
|
+
/**
|
|
17
|
+
* Initialize AsyncLocalStorage on the server
|
|
18
|
+
* This is called lazily when context functions are first used
|
|
4
19
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
20
|
+
function ensureInitialized() {
|
|
21
|
+
if (initialized)
|
|
22
|
+
return;
|
|
23
|
+
initialized = true;
|
|
24
|
+
// Only attempt to load async_hooks on the server
|
|
25
|
+
if (typeof window === 'undefined') {
|
|
26
|
+
try {
|
|
27
|
+
// Dynamic require to avoid static analysis by bundlers
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
29
|
+
const asyncHooks = require('async_hooks');
|
|
30
|
+
logContextStorage = new asyncHooks.AsyncLocalStorage();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// If async_hooks is not available, keep using the stub
|
|
34
|
+
console.warn('[hazo_logs] AsyncLocalStorage not available, context tracking disabled');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
7
38
|
/**
|
|
8
39
|
* Generate a human-readable session ID
|
|
9
40
|
* Format: 2025-12-17-14:30:45-1234 (date-time-4digit)
|
|
@@ -26,6 +57,7 @@ export function generateSessionId() {
|
|
|
26
57
|
* });
|
|
27
58
|
*/
|
|
28
59
|
export function startSession(options, fn) {
|
|
60
|
+
ensureInitialized();
|
|
29
61
|
const sessionId = generateSessionId();
|
|
30
62
|
return logContextStorage.run({ sessionId, reference: options.reference, depth: 1 }, () => {
|
|
31
63
|
// Auto-log session start if logger provided
|
|
@@ -49,6 +81,7 @@ export function startSession(options, fn) {
|
|
|
49
81
|
* });
|
|
50
82
|
*/
|
|
51
83
|
export async function startSessionAsync(options, fn) {
|
|
84
|
+
ensureInitialized();
|
|
52
85
|
const sessionId = generateSessionId();
|
|
53
86
|
return logContextStorage.run({ sessionId, reference: options.reference, depth: 1 }, async () => {
|
|
54
87
|
// Auto-log session start if logger provided
|
|
@@ -73,6 +106,7 @@ export async function startSessionAsync(options, fn) {
|
|
|
73
106
|
* });
|
|
74
107
|
*/
|
|
75
108
|
export function runWithLogContext(context, fn) {
|
|
109
|
+
ensureInitialized();
|
|
76
110
|
const parentContext = logContextStorage.getStore();
|
|
77
111
|
const parentDepth = parentContext?.depth ?? 0;
|
|
78
112
|
const newContext = {
|
|
@@ -95,6 +129,7 @@ export function runWithLogContext(context, fn) {
|
|
|
95
129
|
* });
|
|
96
130
|
*/
|
|
97
131
|
export function runWithLogContextAsync(context, fn) {
|
|
132
|
+
ensureInitialized();
|
|
98
133
|
const parentContext = logContextStorage.getStore();
|
|
99
134
|
const parentDepth = parentContext?.depth ?? 0;
|
|
100
135
|
const newContext = {
|
|
@@ -109,6 +144,7 @@ export function runWithLogContextAsync(context, fn) {
|
|
|
109
144
|
* Returns undefined if not within a context
|
|
110
145
|
*/
|
|
111
146
|
export function getLogContext() {
|
|
147
|
+
ensureInitialized();
|
|
112
148
|
return logContextStorage.getStore();
|
|
113
149
|
}
|
|
114
150
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-context.js","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"log-context.js","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Core singleton logger for hazo_logs
|
|
3
3
|
* Manages the Winston logger instance and transports
|
|
4
|
+
*
|
|
5
|
+
* This module is server-only. All imports are lazy-loaded to prevent
|
|
6
|
+
* bundlers from including server-only dependencies in client bundles.
|
|
4
7
|
*/
|
|
5
8
|
import type { HazoLogConfig, LogEntry } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Load server-only dependencies asynchronously
|
|
11
|
+
* Uses dynamic import to avoid static analysis by bundlers
|
|
12
|
+
*/
|
|
13
|
+
declare function loadDependencies(): Promise<void>;
|
|
6
14
|
export declare class HazoLogger {
|
|
7
15
|
private static instance;
|
|
16
|
+
private static instancePromise;
|
|
8
17
|
private winstonLogger;
|
|
9
18
|
private config;
|
|
10
19
|
private executionId;
|
|
@@ -15,7 +24,13 @@ export declare class HazoLogger {
|
|
|
15
24
|
*/
|
|
16
25
|
private generateExecutionId;
|
|
17
26
|
/**
|
|
18
|
-
* Get the singleton instance of HazoLogger
|
|
27
|
+
* Get the singleton instance of HazoLogger (async)
|
|
28
|
+
* @param configPath - Optional path to config file (only used on first call)
|
|
29
|
+
*/
|
|
30
|
+
static getInstanceAsync(configPath?: string): Promise<HazoLogger>;
|
|
31
|
+
/**
|
|
32
|
+
* Get the singleton instance of HazoLogger (synchronous)
|
|
33
|
+
* Only works if dependencies have already been loaded via getInstanceAsync
|
|
19
34
|
* @param configPath - Optional path to config file (only used on first call)
|
|
20
35
|
*/
|
|
21
36
|
static getInstance(configPath?: string): HazoLogger;
|
|
@@ -42,4 +57,5 @@ export declare class HazoLogger {
|
|
|
42
57
|
getExecutionId(): string;
|
|
43
58
|
private createWinstonLogger;
|
|
44
59
|
}
|
|
60
|
+
export { loadDependencies as preloadHazoLogger };
|
|
45
61
|
//# sourceMappingURL=hazo_logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hazo_logger.d.ts","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hazo_logger.d.ts","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAUpE;;;GAGG;AACH,iBAAe,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB/C;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAoC;IAClE,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IASP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;WACiB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB9E;;;;OAIG;WACW,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAgB1D;;OAEG;WACW,KAAK,IAAI,IAAI;IAQ3B;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAMjC;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI;IAalF;;OAEG;IACI,SAAS,IAAI,aAAa;IAIjC;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B,OAAO,CAAC,mBAAmB;CAoB5B;AAGD,OAAO,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,CAAC"}
|
package/dist/lib/hazo_logger.js
CHANGED
|
@@ -1,19 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Core singleton logger for hazo_logs
|
|
3
3
|
* Manages the Winston logger instance and transports
|
|
4
|
+
*
|
|
5
|
+
* This module is server-only. All imports are lazy-loaded to prevent
|
|
6
|
+
* bundlers from including server-only dependencies in client bundles.
|
|
4
7
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
// Lazy-loaded dependencies (populated on first getInstance call)
|
|
9
|
+
let winston = null;
|
|
10
|
+
let loadConfigFn = null;
|
|
11
|
+
let createConsoleTransportFn = null;
|
|
12
|
+
let createFileTransportFn = null;
|
|
13
|
+
let dependenciesLoaded = false;
|
|
14
|
+
let loadPromise = null;
|
|
15
|
+
/**
|
|
16
|
+
* Load server-only dependencies asynchronously
|
|
17
|
+
* Uses dynamic import to avoid static analysis by bundlers
|
|
18
|
+
*/
|
|
19
|
+
async function loadDependencies() {
|
|
20
|
+
if (dependenciesLoaded)
|
|
21
|
+
return;
|
|
22
|
+
if (loadPromise)
|
|
23
|
+
return loadPromise;
|
|
24
|
+
// Only load on server
|
|
25
|
+
if (typeof window !== 'undefined') {
|
|
26
|
+
throw new Error('[hazo_logs] HazoLogger cannot be used on the client. Use createLogger from hazo_logs (universal) or createClientLogger from hazo_logs/ui instead.');
|
|
27
|
+
}
|
|
28
|
+
loadPromise = (async () => {
|
|
29
|
+
const [winstonMod, configMod, consoleMod, fileMod] = await Promise.all([
|
|
30
|
+
import('winston'),
|
|
31
|
+
import('./config_loader.js'),
|
|
32
|
+
import('./transports/console_transport.js'),
|
|
33
|
+
import('./transports/file_transport.js'),
|
|
34
|
+
]);
|
|
35
|
+
winston = winstonMod.default;
|
|
36
|
+
loadConfigFn = configMod.loadConfig;
|
|
37
|
+
createConsoleTransportFn = consoleMod.createConsoleTransport;
|
|
38
|
+
createFileTransportFn = fileMod.createFileTransport;
|
|
39
|
+
dependenciesLoaded = true;
|
|
40
|
+
})();
|
|
41
|
+
return loadPromise;
|
|
42
|
+
}
|
|
9
43
|
export class HazoLogger {
|
|
10
44
|
static instance = null;
|
|
45
|
+
static instancePromise = null;
|
|
11
46
|
winstonLogger;
|
|
12
47
|
config;
|
|
13
48
|
executionId;
|
|
14
49
|
constructor(configPath) {
|
|
50
|
+
if (!dependenciesLoaded || !loadConfigFn) {
|
|
51
|
+
throw new Error('[hazo_logs] Dependencies not loaded. Use HazoLogger.getInstanceAsync() instead.');
|
|
52
|
+
}
|
|
15
53
|
this.executionId = this.generateExecutionId();
|
|
16
|
-
this.config =
|
|
54
|
+
this.config = loadConfigFn(configPath);
|
|
17
55
|
this.winstonLogger = this.createWinstonLogger();
|
|
18
56
|
}
|
|
19
57
|
/**
|
|
@@ -28,13 +66,37 @@ export class HazoLogger {
|
|
|
28
66
|
return `${datePart}-${timePart}-${randomPart}`;
|
|
29
67
|
}
|
|
30
68
|
/**
|
|
31
|
-
* Get the singleton instance of HazoLogger
|
|
69
|
+
* Get the singleton instance of HazoLogger (async)
|
|
32
70
|
* @param configPath - Optional path to config file (only used on first call)
|
|
33
71
|
*/
|
|
34
|
-
static
|
|
35
|
-
if (
|
|
72
|
+
static async getInstanceAsync(configPath) {
|
|
73
|
+
if (HazoLogger.instance) {
|
|
74
|
+
return HazoLogger.instance;
|
|
75
|
+
}
|
|
76
|
+
if (HazoLogger.instancePromise) {
|
|
77
|
+
return HazoLogger.instancePromise;
|
|
78
|
+
}
|
|
79
|
+
HazoLogger.instancePromise = (async () => {
|
|
80
|
+
await loadDependencies();
|
|
36
81
|
HazoLogger.instance = new HazoLogger(configPath);
|
|
82
|
+
return HazoLogger.instance;
|
|
83
|
+
})();
|
|
84
|
+
return HazoLogger.instancePromise;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the singleton instance of HazoLogger (synchronous)
|
|
88
|
+
* Only works if dependencies have already been loaded via getInstanceAsync
|
|
89
|
+
* @param configPath - Optional path to config file (only used on first call)
|
|
90
|
+
*/
|
|
91
|
+
static getInstance(configPath) {
|
|
92
|
+
if (HazoLogger.instance) {
|
|
93
|
+
return HazoLogger.instance;
|
|
37
94
|
}
|
|
95
|
+
if (!dependenciesLoaded) {
|
|
96
|
+
throw new Error('[hazo_logs] HazoLogger.getInstance() requires dependencies to be pre-loaded. ' +
|
|
97
|
+
'Use HazoLogger.getInstanceAsync() instead, or call loadDependencies() first.');
|
|
98
|
+
}
|
|
99
|
+
HazoLogger.instance = new HazoLogger(configPath);
|
|
38
100
|
return HazoLogger.instance;
|
|
39
101
|
}
|
|
40
102
|
/**
|
|
@@ -42,14 +104,17 @@ export class HazoLogger {
|
|
|
42
104
|
*/
|
|
43
105
|
static reset() {
|
|
44
106
|
if (HazoLogger.instance) {
|
|
45
|
-
HazoLogger.instance.winstonLogger
|
|
107
|
+
HazoLogger.instance.winstonLogger?.close();
|
|
46
108
|
HazoLogger.instance = null;
|
|
109
|
+
HazoLogger.instancePromise = null;
|
|
47
110
|
}
|
|
48
111
|
}
|
|
49
112
|
/**
|
|
50
113
|
* Log an entry - called by PackageLogger
|
|
51
114
|
*/
|
|
52
115
|
log(entry) {
|
|
116
|
+
if (!this.winstonLogger)
|
|
117
|
+
return;
|
|
53
118
|
const { level, message, ...meta } = entry;
|
|
54
119
|
this.winstonLogger.log(level, message, meta);
|
|
55
120
|
}
|
|
@@ -58,6 +123,8 @@ export class HazoLogger {
|
|
|
58
123
|
* Used for logs sent from the browser
|
|
59
124
|
*/
|
|
60
125
|
logClient(entry) {
|
|
126
|
+
if (!this.winstonLogger)
|
|
127
|
+
return;
|
|
61
128
|
const fullEntry = {
|
|
62
129
|
...entry,
|
|
63
130
|
executionId: this.executionId,
|
|
@@ -81,12 +148,15 @@ export class HazoLogger {
|
|
|
81
148
|
return this.executionId;
|
|
82
149
|
}
|
|
83
150
|
createWinstonLogger() {
|
|
151
|
+
if (!winston || !createConsoleTransportFn || !createFileTransportFn) {
|
|
152
|
+
throw new Error('[hazo_logs] Dependencies not loaded');
|
|
153
|
+
}
|
|
84
154
|
const transports = [];
|
|
85
155
|
if (this.config.enable_console) {
|
|
86
|
-
transports.push(
|
|
156
|
+
transports.push(createConsoleTransportFn(this.config.log_level));
|
|
87
157
|
}
|
|
88
158
|
if (this.config.enable_file) {
|
|
89
|
-
transports.push(
|
|
159
|
+
transports.push(createFileTransportFn(this.config));
|
|
90
160
|
}
|
|
91
161
|
return winston.createLogger({
|
|
92
162
|
level: this.config.log_level,
|
|
@@ -94,4 +164,6 @@ export class HazoLogger {
|
|
|
94
164
|
});
|
|
95
165
|
}
|
|
96
166
|
}
|
|
167
|
+
// Export the async loader for pre-initialization
|
|
168
|
+
export { loadDependencies as preloadHazoLogger };
|
|
97
169
|
//# sourceMappingURL=hazo_logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hazo_logger.js","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"hazo_logger.js","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,13 @@ import type { Logger, LogData, PackageLoggerOptions } from './types.js';
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class PackageLogger implements Logger {
|
|
12
12
|
private coreLogger;
|
|
13
|
+
private coreLoggerPromise;
|
|
13
14
|
private packageName;
|
|
14
15
|
constructor(options: PackageLoggerOptions, coreLogger?: HazoLogger);
|
|
16
|
+
/**
|
|
17
|
+
* Get the core logger, waiting if necessary
|
|
18
|
+
*/
|
|
19
|
+
private getCoreLogger;
|
|
15
20
|
private log;
|
|
16
21
|
error(message: string, data?: LogData): void;
|
|
17
22
|
warn(message: string, data?: LogData): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package_logger.d.ts","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAY,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIlF;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"package_logger.d.ts","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAY,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIlF;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,UAAU;IAalE;;OAEG;YACW,aAAa;IAQ3B,OAAO,CAAC,GAAG;IAkCX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAG7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD"}
|
|
@@ -10,28 +10,64 @@ import { getLogContext } from './context/log-context.js';
|
|
|
10
10
|
* Tags all log entries with the package name and captures caller info
|
|
11
11
|
*/
|
|
12
12
|
export class PackageLogger {
|
|
13
|
-
coreLogger;
|
|
13
|
+
coreLogger = null;
|
|
14
|
+
coreLoggerPromise = null;
|
|
14
15
|
packageName;
|
|
15
16
|
constructor(options, coreLogger) {
|
|
16
17
|
this.packageName = options.packageName;
|
|
17
|
-
|
|
18
|
+
if (coreLogger) {
|
|
19
|
+
this.coreLogger = coreLogger;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
// Start async loading of the core logger
|
|
23
|
+
this.coreLoggerPromise = HazoLogger.getInstanceAsync().then((logger) => {
|
|
24
|
+
this.coreLogger = logger;
|
|
25
|
+
return logger;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the core logger, waiting if necessary
|
|
31
|
+
*/
|
|
32
|
+
async getCoreLogger() {
|
|
33
|
+
if (this.coreLogger)
|
|
34
|
+
return this.coreLogger;
|
|
35
|
+
if (this.coreLoggerPromise) {
|
|
36
|
+
return this.coreLoggerPromise;
|
|
37
|
+
}
|
|
38
|
+
throw new Error('[hazo_logs] Core logger not initialized');
|
|
18
39
|
}
|
|
19
40
|
log(level, message, data) {
|
|
20
41
|
const { filename, line } = getCallerInfo();
|
|
21
42
|
const context = getLogContext();
|
|
22
|
-
|
|
43
|
+
const logEntry = {
|
|
23
44
|
timestamp: new Date().toISOString(),
|
|
24
45
|
level,
|
|
25
46
|
package: this.packageName,
|
|
26
47
|
message,
|
|
27
48
|
filename,
|
|
28
49
|
line,
|
|
29
|
-
executionId:
|
|
50
|
+
executionId: '', // Will be set when core logger is available
|
|
30
51
|
...(context?.sessionId ? { sessionId: context.sessionId } : {}),
|
|
31
52
|
...(context?.reference ? { reference: context.reference } : {}),
|
|
32
53
|
...(context?.depth ? { depth: context.depth } : {}),
|
|
33
54
|
...(data ? { data } : {}),
|
|
34
|
-
}
|
|
55
|
+
};
|
|
56
|
+
if (this.coreLogger) {
|
|
57
|
+
// Core logger is ready, log immediately
|
|
58
|
+
logEntry.executionId = this.coreLogger.getExecutionId();
|
|
59
|
+
this.coreLogger.log(logEntry);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Core logger is still initializing, queue the log
|
|
63
|
+
this.getCoreLogger().then((logger) => {
|
|
64
|
+
logEntry.executionId = logger.getExecutionId();
|
|
65
|
+
logger.log(logEntry);
|
|
66
|
+
}).catch(() => {
|
|
67
|
+
// Fallback to console if core logger fails to initialize
|
|
68
|
+
console.error(`[${this.packageName}] ${message}`, data);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
35
71
|
}
|
|
36
72
|
error(message, data) {
|
|
37
73
|
this.log('error', message, data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package_logger.js","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,UAAU,
|
|
1
|
+
{"version":3,"file":"package_logger.js","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal Logger - Works on both server and client
|
|
3
|
+
*
|
|
4
|
+
* On server: Uses the full PackageLogger with file transports
|
|
5
|
+
* On client: Uses console-based logging (logs are not persisted)
|
|
6
|
+
*
|
|
7
|
+
* For full server logging capabilities, import from 'hazo_logs/server'
|
|
8
|
+
* For client logging that posts to server API, use 'hazo_logs/ui' createClientLogger
|
|
9
|
+
*/
|
|
10
|
+
import type { Logger, LogData, LogLevel } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Console-based logger for client-side use
|
|
13
|
+
* Provides basic logging that outputs to browser console
|
|
14
|
+
*/
|
|
15
|
+
declare class ConsoleLogger implements Logger {
|
|
16
|
+
private packageName;
|
|
17
|
+
private minLevel;
|
|
18
|
+
constructor(packageName: string, minLevel?: LogLevel);
|
|
19
|
+
private shouldLog;
|
|
20
|
+
private formatMessage;
|
|
21
|
+
error(message: string, data?: LogData): void;
|
|
22
|
+
warn(message: string, data?: LogData): void;
|
|
23
|
+
info(message: string, data?: LogData): void;
|
|
24
|
+
debug(message: string, data?: LogData): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Pre-load the server logger module (call this early in server startup)
|
|
28
|
+
* This allows createLogger to return a real server logger synchronously
|
|
29
|
+
*/
|
|
30
|
+
export declare function preloadServerLogger(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Create a universal logger that works on both server and client
|
|
33
|
+
*
|
|
34
|
+
* On server: Returns PackageLogger (may start as ConsoleLogger and upgrade)
|
|
35
|
+
* On client: Returns ConsoleLogger that outputs to browser console
|
|
36
|
+
*
|
|
37
|
+
* @param packageName - Name of the package (e.g., "hazo_auth", "my_app")
|
|
38
|
+
* @returns Logger instance
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import { createLogger } from 'hazo_logs';
|
|
43
|
+
*
|
|
44
|
+
* const logger = createLogger('my_app');
|
|
45
|
+
* logger.info('Application started');
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* Note: For full server capabilities (context, sessions), use:
|
|
49
|
+
* ```typescript
|
|
50
|
+
* import { createLogger } from 'hazo_logs/server';
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* For client logging that persists to server, use:
|
|
54
|
+
* ```typescript
|
|
55
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function createLogger(packageName: string): Logger;
|
|
59
|
+
/**
|
|
60
|
+
* Async version of createLogger - returns real server logger immediately
|
|
61
|
+
*
|
|
62
|
+
* @param packageName - Name of the package
|
|
63
|
+
* @returns Promise<Logger>
|
|
64
|
+
*/
|
|
65
|
+
export declare function createLoggerAsync(packageName: string): Promise<Logger>;
|
|
66
|
+
export { ConsoleLogger };
|
|
67
|
+
//# sourceMappingURL=universal-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal-logger.d.ts","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgB5D;;;GAGG;AACH,cAAM,aAAc,YAAW,MAAM;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAW;gBAEf,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAkB;IAK7D,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAKrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAK7C;AAoDD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB5E;AAGD,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal Logger - Works on both server and client
|
|
3
|
+
*
|
|
4
|
+
* On server: Uses the full PackageLogger with file transports
|
|
5
|
+
* On client: Uses console-based logging (logs are not persisted)
|
|
6
|
+
*
|
|
7
|
+
* For full server logging capabilities, import from 'hazo_logs/server'
|
|
8
|
+
* For client logging that posts to server API, use 'hazo_logs/ui' createClientLogger
|
|
9
|
+
*/
|
|
10
|
+
const LOG_LEVEL_PRIORITY = {
|
|
11
|
+
error: 0,
|
|
12
|
+
warn: 1,
|
|
13
|
+
info: 2,
|
|
14
|
+
debug: 3,
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Check if we're running on the server
|
|
18
|
+
*/
|
|
19
|
+
function isServer() {
|
|
20
|
+
return typeof window === 'undefined';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Console-based logger for client-side use
|
|
24
|
+
* Provides basic logging that outputs to browser console
|
|
25
|
+
*/
|
|
26
|
+
class ConsoleLogger {
|
|
27
|
+
packageName;
|
|
28
|
+
minLevel;
|
|
29
|
+
constructor(packageName, minLevel = 'debug') {
|
|
30
|
+
this.packageName = packageName;
|
|
31
|
+
this.minLevel = minLevel;
|
|
32
|
+
}
|
|
33
|
+
shouldLog(level) {
|
|
34
|
+
return LOG_LEVEL_PRIORITY[level] <= LOG_LEVEL_PRIORITY[this.minLevel];
|
|
35
|
+
}
|
|
36
|
+
formatMessage(level, message) {
|
|
37
|
+
const timestamp = new Date().toISOString();
|
|
38
|
+
return `[${timestamp}] [${level.toUpperCase()}] [${this.packageName}] ${message}`;
|
|
39
|
+
}
|
|
40
|
+
error(message, data) {
|
|
41
|
+
if (this.shouldLog('error')) {
|
|
42
|
+
console.error(this.formatMessage('error', message), data ?? '');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
warn(message, data) {
|
|
46
|
+
if (this.shouldLog('warn')) {
|
|
47
|
+
console.warn(this.formatMessage('warn', message), data ?? '');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
info(message, data) {
|
|
51
|
+
if (this.shouldLog('info')) {
|
|
52
|
+
console.info(this.formatMessage('info', message), data ?? '');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
debug(message, data) {
|
|
56
|
+
if (this.shouldLog('debug')) {
|
|
57
|
+
console.debug(this.formatMessage('debug', message), data ?? '');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Deferred logger that upgrades from ConsoleLogger to real server logger
|
|
63
|
+
* when the server module is loaded asynchronously
|
|
64
|
+
*/
|
|
65
|
+
class DeferredServerLogger {
|
|
66
|
+
packageName;
|
|
67
|
+
innerLogger;
|
|
68
|
+
upgraded = false;
|
|
69
|
+
constructor(packageName) {
|
|
70
|
+
this.packageName = packageName;
|
|
71
|
+
this.innerLogger = new ConsoleLogger(packageName);
|
|
72
|
+
// Attempt async upgrade to real server logger
|
|
73
|
+
this.upgrade();
|
|
74
|
+
}
|
|
75
|
+
async upgrade() {
|
|
76
|
+
if (this.upgraded)
|
|
77
|
+
return;
|
|
78
|
+
try {
|
|
79
|
+
const { createLogger } = await import('./package_logger.js');
|
|
80
|
+
this.innerLogger = createLogger(this.packageName);
|
|
81
|
+
this.upgraded = true;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Keep using ConsoleLogger
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
error(message, data) {
|
|
88
|
+
this.innerLogger.error(message, data);
|
|
89
|
+
}
|
|
90
|
+
warn(message, data) {
|
|
91
|
+
this.innerLogger.warn(message, data);
|
|
92
|
+
}
|
|
93
|
+
info(message, data) {
|
|
94
|
+
this.innerLogger.info(message, data);
|
|
95
|
+
}
|
|
96
|
+
debug(message, data) {
|
|
97
|
+
this.innerLogger.debug(message, data);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Cache for pre-loaded server loggers
|
|
101
|
+
const serverLoggerCache = new Map();
|
|
102
|
+
let serverModuleLoaded = false;
|
|
103
|
+
let serverModulePromise = null;
|
|
104
|
+
/**
|
|
105
|
+
* Pre-load the server logger module (call this early in server startup)
|
|
106
|
+
* This allows createLogger to return a real server logger synchronously
|
|
107
|
+
*/
|
|
108
|
+
export async function preloadServerLogger() {
|
|
109
|
+
if (!isServer() || serverModuleLoaded)
|
|
110
|
+
return;
|
|
111
|
+
try {
|
|
112
|
+
if (!serverModulePromise) {
|
|
113
|
+
serverModulePromise = import('./package_logger.js');
|
|
114
|
+
}
|
|
115
|
+
await serverModulePromise;
|
|
116
|
+
serverModuleLoaded = true;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Silently fail
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create a universal logger that works on both server and client
|
|
124
|
+
*
|
|
125
|
+
* On server: Returns PackageLogger (may start as ConsoleLogger and upgrade)
|
|
126
|
+
* On client: Returns ConsoleLogger that outputs to browser console
|
|
127
|
+
*
|
|
128
|
+
* @param packageName - Name of the package (e.g., "hazo_auth", "my_app")
|
|
129
|
+
* @returns Logger instance
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* import { createLogger } from 'hazo_logs';
|
|
134
|
+
*
|
|
135
|
+
* const logger = createLogger('my_app');
|
|
136
|
+
* logger.info('Application started');
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* Note: For full server capabilities (context, sessions), use:
|
|
140
|
+
* ```typescript
|
|
141
|
+
* import { createLogger } from 'hazo_logs/server';
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* For client logging that persists to server, use:
|
|
145
|
+
* ```typescript
|
|
146
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
export function createLogger(packageName) {
|
|
150
|
+
if (!isServer()) {
|
|
151
|
+
// Client-side: return console logger
|
|
152
|
+
return new ConsoleLogger(packageName);
|
|
153
|
+
}
|
|
154
|
+
// Check cache first
|
|
155
|
+
const cached = serverLoggerCache.get(packageName);
|
|
156
|
+
if (cached) {
|
|
157
|
+
return cached;
|
|
158
|
+
}
|
|
159
|
+
// Server-side: create deferred logger that upgrades asynchronously
|
|
160
|
+
const logger = new DeferredServerLogger(packageName);
|
|
161
|
+
serverLoggerCache.set(packageName, logger);
|
|
162
|
+
return logger;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Async version of createLogger - returns real server logger immediately
|
|
166
|
+
*
|
|
167
|
+
* @param packageName - Name of the package
|
|
168
|
+
* @returns Promise<Logger>
|
|
169
|
+
*/
|
|
170
|
+
export async function createLoggerAsync(packageName) {
|
|
171
|
+
if (!isServer()) {
|
|
172
|
+
return new ConsoleLogger(packageName);
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
if (!serverModulePromise) {
|
|
176
|
+
serverModulePromise = import('./package_logger.js');
|
|
177
|
+
}
|
|
178
|
+
const { createLogger } = await serverModulePromise;
|
|
179
|
+
serverModuleLoaded = true;
|
|
180
|
+
const logger = createLogger(packageName);
|
|
181
|
+
serverLoggerCache.set(packageName, logger);
|
|
182
|
+
return logger;
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
console.warn(`[hazo_logs] Failed to load server logger, falling back to console logger for ${packageName}`);
|
|
186
|
+
return new ConsoleLogger(packageName);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Export ConsoleLogger for direct use if needed
|
|
190
|
+
export { ConsoleLogger };
|
|
191
|
+
//# sourceMappingURL=universal-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal-logger.js","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hazo_logs/server - Server-only logging module
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
|
|
5
|
+
* imported in client components. Import will fail in browser bundles.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createLogger, runWithLogContext } from 'hazo_logs/server';
|
|
9
|
+
*
|
|
10
|
+
* const logger = createLogger('my_package');
|
|
11
|
+
* logger.info('Hello world', { key: 'value' });
|
|
12
|
+
*
|
|
13
|
+
* For client-side logging, use:
|
|
14
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
15
|
+
*/
|
|
16
|
+
import 'server-only';
|
|
17
|
+
export { HazoLogger } from './lib/hazo_logger.js';
|
|
18
|
+
export { PackageLogger, createLogger } from './lib/package_logger.js';
|
|
19
|
+
export { loadConfig } from './lib/config_loader.js';
|
|
20
|
+
export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
|
|
21
|
+
export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
|
|
22
|
+
export type { Logger, LogLevel, LogData, LogEntry, LogContext, HazoLogConfig, PackageLoggerOptions, } from './lib/types.js';
|
|
23
|
+
export type { ReadLogsOptions, LogQueryResult } from './lib/log-reader.js';
|
|
24
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hazo_logs/server - Server-only logging module
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
|
|
5
|
+
* imported in client components. Import will fail in browser bundles.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createLogger, runWithLogContext } from 'hazo_logs/server';
|
|
9
|
+
*
|
|
10
|
+
* const logger = createLogger('my_package');
|
|
11
|
+
* logger.info('Hello world', { key: 'value' });
|
|
12
|
+
*
|
|
13
|
+
* For client-side logging, use:
|
|
14
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
15
|
+
*/
|
|
16
|
+
import 'server-only';
|
|
17
|
+
// Core logging
|
|
18
|
+
export { HazoLogger } from './lib/hazo_logger.js';
|
|
19
|
+
export { PackageLogger, createLogger } from './lib/package_logger.js';
|
|
20
|
+
export { loadConfig } from './lib/config_loader.js';
|
|
21
|
+
// Log context (uses AsyncLocalStorage)
|
|
22
|
+
export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
|
|
23
|
+
// Log reader (uses fs, readline)
|
|
24
|
+
export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
|
|
25
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,aAAa,CAAC;AAErB,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,iCAAiC;AACjC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
|
package/dist/ui/server.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-side UI exports for hazo_logs
|
|
3
3
|
*
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs and CANNOT be
|
|
5
|
+
* imported in client components.
|
|
6
|
+
*
|
|
4
7
|
* Use these in API routes and server components only.
|
|
5
8
|
*/
|
|
9
|
+
import 'server-only';
|
|
6
10
|
export { createLogApiHandler } from './api/log-api-handler.js';
|
|
7
11
|
export { withLogAuth } from './middleware/with-log-auth.js';
|
|
8
12
|
export type { LogApiConfig, LogApiHandler, AuthCheckFn, } from './types.js';
|
package/dist/ui/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
package/dist/ui/server.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-side UI exports for hazo_logs
|
|
3
3
|
*
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs and CANNOT be
|
|
5
|
+
* imported in client components.
|
|
6
|
+
*
|
|
4
7
|
* Use these in API routes and server components only.
|
|
5
8
|
*/
|
|
9
|
+
import 'server-only';
|
|
6
10
|
// API Handler
|
|
7
11
|
export { createLogApiHandler } from './api/log-api-handler.js';
|
|
8
12
|
// Middleware
|
package/dist/ui/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,aAAa,CAAC;AAErB,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hazo_logs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Logger for hazo packages - Winston wrapper with singleton pattern",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
"import": "./dist/index.js",
|
|
12
12
|
"require": "./dist/index.js"
|
|
13
13
|
},
|
|
14
|
+
"./server": {
|
|
15
|
+
"types": "./dist/server.d.ts",
|
|
16
|
+
"import": "./dist/server.js",
|
|
17
|
+
"require": "./dist/server.js"
|
|
18
|
+
},
|
|
14
19
|
"./ui": {
|
|
15
20
|
"types": "./dist/ui/index.d.ts",
|
|
16
21
|
"import": "./dist/ui/index.js",
|
|
@@ -51,12 +56,16 @@
|
|
|
51
56
|
],
|
|
52
57
|
"author": "Pubs Abayasiri",
|
|
53
58
|
"license": "MIT",
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=18.0.0"
|
|
61
|
+
},
|
|
54
62
|
"bugs": {
|
|
55
63
|
"url": "https://github.com/pub12/hazo_logs/issues"
|
|
56
64
|
},
|
|
57
65
|
"homepage": "https://github.com/pub12/hazo_logs#readme",
|
|
58
66
|
"dependencies": {
|
|
59
67
|
"ini": "^4.1.0",
|
|
68
|
+
"server-only": "^0.0.1",
|
|
60
69
|
"winston": "^3.17.0",
|
|
61
70
|
"winston-daily-rotate-file": "^5.0.0"
|
|
62
71
|
},
|