hazo_logs 1.0.7 → 1.0.8
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 +28 -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/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 +7 -1
package/README.md
CHANGED
|
@@ -158,18 +158,33 @@ 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
|
+
|
|
173
188
|
### Tailwind CSS Setup Required
|
|
174
189
|
|
|
175
190
|
The log viewer UI uses dynamic Tailwind classes that would be purged during build. You **must** configure both:
|
|
@@ -207,11 +222,10 @@ export default {
|
|
|
207
222
|
|
|
208
223
|
### Session and Reference Tracking
|
|
209
224
|
|
|
210
|
-
Track logs across async operations:
|
|
225
|
+
Track logs across async operations (server-only feature):
|
|
211
226
|
|
|
212
227
|
```typescript
|
|
213
|
-
import { createLogger } from 'hazo_logs';
|
|
214
|
-
import { runWithLogContext } from 'hazo_logs';
|
|
228
|
+
import { createLogger, runWithLogContext } from 'hazo_logs/server';
|
|
215
229
|
|
|
216
230
|
const logger = createLogger('auth');
|
|
217
231
|
|
|
@@ -508,11 +522,15 @@ cp node_modules/hazo_logs/config/hazo_logs_config.example.ini config/hazo_logs_c
|
|
|
508
522
|
### Import errors in client components
|
|
509
523
|
|
|
510
524
|
```
|
|
511
|
-
Error:
|
|
512
|
-
Error:
|
|
525
|
+
Error: Module not found: Can't resolve 'async_hooks'
|
|
526
|
+
Error: Module not found: Can't resolve 'fs'
|
|
513
527
|
```
|
|
514
528
|
|
|
515
|
-
|
|
529
|
+
This happens when server-only code is imported in client components. Solutions:
|
|
530
|
+
|
|
531
|
+
1. **For logging in client components**: Use `createClientLogger` from `hazo_logs/ui`
|
|
532
|
+
2. **For server-only modules**: Import from `hazo_logs/server` instead of `hazo_logs`
|
|
533
|
+
3. **For universal code**: The base `hazo_logs` import now works on both client and server (returns console logger on client)
|
|
516
534
|
|
|
517
535
|
### hazo_ui missing errors
|
|
518
536
|
|
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"}
|
|
@@ -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.8",
|
|
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",
|
|
@@ -57,6 +62,7 @@
|
|
|
57
62
|
"homepage": "https://github.com/pub12/hazo_logs#readme",
|
|
58
63
|
"dependencies": {
|
|
59
64
|
"ini": "^4.1.0",
|
|
65
|
+
"server-only": "^0.0.1",
|
|
60
66
|
"winston": "^3.17.0",
|
|
61
67
|
"winston-daily-rotate-file": "^5.0.0"
|
|
62
68
|
},
|