hazo_logs 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +498 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config_loader.d.ts.map +1 -1
- package/dist/lib/config_loader.js +13 -4
- package/dist/lib/config_loader.js.map +1 -1
- package/dist/lib/hazo_logger.d.ts +5 -0
- package/dist/lib/hazo_logger.d.ts.map +1 -1
- package/dist/lib/hazo_logger.js +15 -0
- package/dist/lib/hazo_logger.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/types.d.ts +6 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tailwind.d.ts +61 -0
- package/dist/tailwind.d.ts.map +1 -0
- package/dist/tailwind.js +106 -0
- package/dist/tailwind.js.map +1 -0
- package/dist/ui/api/log-api-handler.d.ts +2 -2
- package/dist/ui/api/log-api-handler.d.ts.map +1 -1
- package/dist/ui/api/log-api-handler.js +49 -2
- package/dist/ui/api/log-api-handler.js.map +1 -1
- package/dist/ui/client-logger.d.ts +54 -0
- package/dist/ui/client-logger.d.ts.map +1 -0
- package/dist/ui/client-logger.js +126 -0
- package/dist/ui/client-logger.js.map +1 -0
- package/dist/ui/components/LogTable.d.ts.map +1 -1
- package/dist/ui/components/LogTable.js +1 -1
- package/dist/ui/components/LogTable.js.map +1 -1
- package/dist/ui/components/LogTimeline.d.ts.map +1 -1
- package/dist/ui/components/LogTimeline.js +9 -1
- package/dist/ui/components/LogTimeline.js.map +1 -1
- package/dist/ui/index.d.ts +3 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +2 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/middleware/with-log-auth.d.ts.map +1 -1
- package/dist/ui/middleware/with-log-auth.js +15 -13
- package/dist/ui/middleware/with-log-auth.js.map +1 -1
- package/dist/ui/types.d.ts +7 -0
- package/dist/ui/types.d.ts.map +1 -1
- package/package.json +6 -2
package/README.md
ADDED
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
# hazo_logs
|
|
2
|
+
|
|
3
|
+
A Winston-based logging library for Node.js/Next.js applications with a built-in log viewer UI.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/hazo_logs)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
- **Structured Logging**: Winston wrapper with singleton pattern for consistent logging across your app
|
|
11
|
+
- **Package Tagging**: Automatically tag logs by package/module name
|
|
12
|
+
- **Daily Rotation**: Automatic log file rotation with configurable retention
|
|
13
|
+
- **Session Tracking**: Track logs across async operations with sessionId and reference
|
|
14
|
+
- **Built-in UI**: React-based log viewer with filtering, sorting, and pagination
|
|
15
|
+
- **Zero Config**: Works out of the box with sensible defaults
|
|
16
|
+
- **Minimal Integration**: Add log viewer to your app with just 2 files (~6 lines of code)
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
### Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install hazo_logs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
For the UI components, also install peer dependencies:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install hazo_logs next react hazo_ui
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Basic Usage (Logging Only)
|
|
33
|
+
|
|
34
|
+
**1. Create a logger in your code:**
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { createLogger } from 'hazo_logs';
|
|
38
|
+
|
|
39
|
+
const logger = createLogger('my-package');
|
|
40
|
+
|
|
41
|
+
logger.info('Application started');
|
|
42
|
+
logger.warn('This is a warning', { userId: 123 });
|
|
43
|
+
logger.error('Something went wrong', { error: 'details' });
|
|
44
|
+
logger.debug('Debug information');
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**2. (Optional) Configure logging:**
|
|
48
|
+
|
|
49
|
+
Create `hazo_logs_config.ini` in your project root:
|
|
50
|
+
|
|
51
|
+
```ini
|
|
52
|
+
[hazo_logs]
|
|
53
|
+
log_directory = ./logs
|
|
54
|
+
log_level = info
|
|
55
|
+
enable_console = true
|
|
56
|
+
enable_file = true
|
|
57
|
+
max_file_size = 20m
|
|
58
|
+
max_files = 14d
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
That's it! Logs will be written to `./logs/hazo-YYYY-MM-DD.log` files.
|
|
62
|
+
|
|
63
|
+
### Add Log Viewer UI (Optional)
|
|
64
|
+
|
|
65
|
+
Add a log viewer to your Next.js app with just 2 files:
|
|
66
|
+
|
|
67
|
+
**1. Create API route** (`app/api/logs/route.ts`):
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { createLogApiHandler } from 'hazo_logs/ui/server';
|
|
71
|
+
|
|
72
|
+
const handler = createLogApiHandler();
|
|
73
|
+
|
|
74
|
+
export const { GET } = handler;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**2. Create UI page** (`app/logs/page.tsx`):
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
'use client';
|
|
81
|
+
|
|
82
|
+
import { LogViewerPage } from 'hazo_logs/ui';
|
|
83
|
+
|
|
84
|
+
export default function LogsPage() {
|
|
85
|
+
return <LogViewerPage apiBasePath="/api/logs" title="System Logs" />;
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**3. Configure Tailwind CSS** (`tailwind.config.ts`):
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import type { Config } from 'tailwindcss';
|
|
93
|
+
import { tailwindSafelist, tailwindContentPath } from 'hazo_logs/tailwind';
|
|
94
|
+
|
|
95
|
+
const config: Config = {
|
|
96
|
+
content: [
|
|
97
|
+
'./src/**/*.{js,ts,jsx,tsx,mdx}',
|
|
98
|
+
'./app/**/*.{js,ts,jsx,tsx,mdx}',
|
|
99
|
+
tailwindContentPath, // Add hazo_logs components
|
|
100
|
+
],
|
|
101
|
+
safelist: tailwindSafelist, // Prevent purging of dynamic classes
|
|
102
|
+
// ... rest of your config
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export default config;
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Visit `/logs` in your app to view logs!
|
|
109
|
+
|
|
110
|
+
### Client-Side Logging (Browser)
|
|
111
|
+
|
|
112
|
+
For logging from client components (browser), use the client logger:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
'use client';
|
|
116
|
+
import { createClientLogger } from 'hazo_logs/ui';
|
|
117
|
+
|
|
118
|
+
const logger = createClientLogger({
|
|
119
|
+
packageName: 'my-app-client',
|
|
120
|
+
apiBasePath: '/api/logs',
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
logger.info('User clicked button', { buttonId: 'submit' });
|
|
124
|
+
logger.error('Failed to load data', { error: err.message });
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Important Notes
|
|
128
|
+
|
|
129
|
+
### Server-Only Core Logger
|
|
130
|
+
|
|
131
|
+
The main `hazo_logs` import uses Node.js APIs (`fs`, `async_hooks`) and **cannot be imported in client components**. If you try to import it in a client component, you'll get build errors.
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
// Server components, API routes, middleware - OK
|
|
135
|
+
import { createLogger } from 'hazo_logs';
|
|
136
|
+
|
|
137
|
+
// Client components - use client logger instead
|
|
138
|
+
import { createClientLogger } from 'hazo_logs/ui';
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Tailwind CSS Setup Required
|
|
142
|
+
|
|
143
|
+
The log viewer UI uses dynamic Tailwind classes that would be purged during build. You **must** configure both:
|
|
144
|
+
|
|
145
|
+
1. **Content path**: So Tailwind scans the hazo_logs component files
|
|
146
|
+
2. **Safelist**: To preserve dynamically-constructed classes
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
import { tailwindSafelist, tailwindContentPath } from 'hazo_logs/tailwind';
|
|
150
|
+
|
|
151
|
+
export default {
|
|
152
|
+
content: [
|
|
153
|
+
// your paths...
|
|
154
|
+
tailwindContentPath,
|
|
155
|
+
],
|
|
156
|
+
safelist: tailwindSafelist,
|
|
157
|
+
};
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Alternatively, use the preset:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
import { hazoLogsPreset } from 'hazo_logs/tailwind';
|
|
164
|
+
|
|
165
|
+
export default {
|
|
166
|
+
presets: [hazoLogsPreset],
|
|
167
|
+
content: [
|
|
168
|
+
// your paths...
|
|
169
|
+
'./node_modules/hazo_logs/dist/**/*.{js,jsx}',
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Advanced Usage
|
|
175
|
+
|
|
176
|
+
### Session and Reference Tracking
|
|
177
|
+
|
|
178
|
+
Track logs across async operations:
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { createLogger } from 'hazo_logs';
|
|
182
|
+
import { runWithLogContext } from 'hazo_logs';
|
|
183
|
+
|
|
184
|
+
const logger = createLogger('auth');
|
|
185
|
+
|
|
186
|
+
async function handleRequest(req) {
|
|
187
|
+
await runWithLogContext(
|
|
188
|
+
{
|
|
189
|
+
sessionId: req.sessionId,
|
|
190
|
+
reference: `user-${req.userId}`,
|
|
191
|
+
depth: 0,
|
|
192
|
+
},
|
|
193
|
+
async () => {
|
|
194
|
+
logger.info('Request started'); // Automatically includes sessionId and reference
|
|
195
|
+
await processRequest(req);
|
|
196
|
+
logger.info('Request completed');
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Embedded Log Viewer
|
|
203
|
+
|
|
204
|
+
Use the log viewer as a sidebar component:
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
import { LogViewerPage } from 'hazo_logs/ui';
|
|
208
|
+
|
|
209
|
+
function AdminPanel() {
|
|
210
|
+
return (
|
|
211
|
+
<div className="flex">
|
|
212
|
+
<Sidebar />
|
|
213
|
+
<div className="flex-1">
|
|
214
|
+
<LogViewerPage
|
|
215
|
+
apiBasePath="/api/logs"
|
|
216
|
+
title="Recent Logs"
|
|
217
|
+
embedded={true}
|
|
218
|
+
showHeader={true}
|
|
219
|
+
className="h-screen"
|
|
220
|
+
/>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Custom Authentication
|
|
228
|
+
|
|
229
|
+
Protect your log viewer with authentication:
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
import { createLogApiHandler, withLogAuth } from 'hazo_logs/ui/server';
|
|
233
|
+
|
|
234
|
+
const handler = createLogApiHandler();
|
|
235
|
+
|
|
236
|
+
const authHandler = withLogAuth(handler, async (request) => {
|
|
237
|
+
const session = await getSession(request);
|
|
238
|
+
return session?.user?.role === 'admin';
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
export const { GET } = authHandler;
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Individual Components
|
|
245
|
+
|
|
246
|
+
Import components separately for custom layouts:
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
import {
|
|
250
|
+
LogTable,
|
|
251
|
+
LogTimeline,
|
|
252
|
+
LogPagination,
|
|
253
|
+
LogLevelBadge,
|
|
254
|
+
} from 'hazo_logs/ui';
|
|
255
|
+
|
|
256
|
+
// Build your own custom log viewer
|
|
257
|
+
function CustomLogViewer() {
|
|
258
|
+
const [logs, setLogs] = useState([]);
|
|
259
|
+
|
|
260
|
+
return (
|
|
261
|
+
<div>
|
|
262
|
+
<LogTable logs={logs} isLoading={false} />
|
|
263
|
+
<LogPagination
|
|
264
|
+
currentPage={1}
|
|
265
|
+
totalPages={10}
|
|
266
|
+
pageSize={50}
|
|
267
|
+
total={500}
|
|
268
|
+
onPageChange={setPage}
|
|
269
|
+
onPageSizeChange={setPageSize}
|
|
270
|
+
/>
|
|
271
|
+
</div>
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Configuration Reference
|
|
277
|
+
|
|
278
|
+
Create `hazo_logs_config.ini` in your project root:
|
|
279
|
+
|
|
280
|
+
```ini
|
|
281
|
+
[hazo_logs]
|
|
282
|
+
# Core Logging Settings
|
|
283
|
+
log_directory = ./logs # Where to write log files
|
|
284
|
+
log_level = info # Minimum level: error, warn, info, debug
|
|
285
|
+
enable_console = true # Log to console
|
|
286
|
+
enable_file = true # Log to files with rotation
|
|
287
|
+
max_file_size = 20m # Max size per file (supports k, m, g)
|
|
288
|
+
max_files = 14d # Retention period (e.g., 14d = 14 days)
|
|
289
|
+
date_pattern = YYYY-MM-DD # Date format for log filenames
|
|
290
|
+
|
|
291
|
+
# Log Viewer UI Settings
|
|
292
|
+
enable_log_viewer = true # Enable the API endpoints
|
|
293
|
+
log_viewer_page_size = 50 # Results per page
|
|
294
|
+
log_viewer_max_results = 1000 # Max entries to load for filtering
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
If no config file is found, sensible defaults are used.
|
|
298
|
+
|
|
299
|
+
## API Reference
|
|
300
|
+
|
|
301
|
+
### Core Exports (`hazo_logs`)
|
|
302
|
+
|
|
303
|
+
#### `createLogger(packageName: string): Logger`
|
|
304
|
+
|
|
305
|
+
Create a package-specific logger.
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
const logger = createLogger('my-package');
|
|
309
|
+
logger.info('Hello world');
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
#### `Logger` Interface
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
interface Logger {
|
|
316
|
+
error(message: string, data?: Record<string, unknown>): void;
|
|
317
|
+
warn(message: string, data?: Record<string, unknown>): void;
|
|
318
|
+
info(message: string, data?: Record<string, unknown>): void;
|
|
319
|
+
debug(message: string, data?: Record<string, unknown>): void;
|
|
320
|
+
}
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
#### `runWithLogContext(context: LogContext, fn: () => Promise<T>): Promise<T>`
|
|
324
|
+
|
|
325
|
+
Run code with log context (sessionId, reference, depth).
|
|
326
|
+
|
|
327
|
+
#### `readLogs(options): Promise<LogQueryResult>`
|
|
328
|
+
|
|
329
|
+
Read logs from files with filtering and pagination (server-side only).
|
|
330
|
+
|
|
331
|
+
### UI Exports (`hazo_logs/ui`)
|
|
332
|
+
|
|
333
|
+
#### `LogViewerPage`
|
|
334
|
+
|
|
335
|
+
Main log viewer component.
|
|
336
|
+
|
|
337
|
+
**Props:**
|
|
338
|
+
- `apiBasePath?: string` - API endpoint path (default: `/api/logs`)
|
|
339
|
+
- `title?: string` - Page title (default: `Log Viewer`)
|
|
340
|
+
- `className?: string` - Additional CSS classes
|
|
341
|
+
- `embedded?: boolean` - Embedded mode (default: `false`)
|
|
342
|
+
- `showHeader?: boolean` - Show header (default: `true`)
|
|
343
|
+
|
|
344
|
+
#### Individual Components
|
|
345
|
+
|
|
346
|
+
- `LogTable` - Table view of logs
|
|
347
|
+
- `LogTimeline` - Timeline view with grouping
|
|
348
|
+
- `LogPagination` - Pagination controls
|
|
349
|
+
- `LogLevelBadge` - Badge for log levels
|
|
350
|
+
|
|
351
|
+
### Server Exports (`hazo_logs/ui/server`)
|
|
352
|
+
|
|
353
|
+
#### `createLogApiHandler(config?): LogApiHandler`
|
|
354
|
+
|
|
355
|
+
Create Next.js API route handler.
|
|
356
|
+
|
|
357
|
+
**Options:**
|
|
358
|
+
- `logDirectory?: string` - Override default log directory
|
|
359
|
+
|
|
360
|
+
**Returns:**
|
|
361
|
+
```typescript
|
|
362
|
+
{
|
|
363
|
+
GET: (request: Request) => Promise<Response>
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
#### `withLogAuth(handler, authCheck): LogApiHandler`
|
|
368
|
+
|
|
369
|
+
Wrap handler with authentication.
|
|
370
|
+
|
|
371
|
+
```typescript
|
|
372
|
+
const authHandler = withLogAuth(handler, async (request) => {
|
|
373
|
+
// Return true to allow access, false to deny
|
|
374
|
+
return await isAdmin(request);
|
|
375
|
+
});
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## Log File Format
|
|
379
|
+
|
|
380
|
+
Logs are stored as newline-delimited JSON:
|
|
381
|
+
|
|
382
|
+
```json
|
|
383
|
+
{"timestamp":"2025-12-18T10:30:45.123Z","level":"info","package":"auth","message":"User logged in","filename":"auth.ts","line":42,"executionId":"2025-12-18-10:30:45-1234","sessionId":"sess_abc123","reference":"user-456","data":{"userId":456}}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
**Fields:**
|
|
387
|
+
- `timestamp` - ISO 8601 timestamp
|
|
388
|
+
- `level` - Log level (error, warn, info, debug)
|
|
389
|
+
- `package` - Package name from createLogger
|
|
390
|
+
- `message` - Log message
|
|
391
|
+
- `filename` - Source file name
|
|
392
|
+
- `line` - Line number in source file
|
|
393
|
+
- `executionId` - Unique ID per server start
|
|
394
|
+
- `sessionId` - Optional session ID from context
|
|
395
|
+
- `reference` - Optional reference from context
|
|
396
|
+
- `depth` - Optional call depth from context
|
|
397
|
+
- `data` - Optional additional data
|
|
398
|
+
|
|
399
|
+
## UI Screenshots
|
|
400
|
+
|
|
401
|
+
### Table View
|
|
402
|
+
Filter and sort logs by level, package, session, execution ID, or search text.
|
|
403
|
+
|
|
404
|
+
### Timeline View
|
|
405
|
+
Visualize logs grouped by package or session with hierarchical depth display.
|
|
406
|
+
|
|
407
|
+
## Examples
|
|
408
|
+
|
|
409
|
+
See the `test-app/` directory for a complete working example.
|
|
410
|
+
|
|
411
|
+
## Troubleshooting
|
|
412
|
+
|
|
413
|
+
### Config file not found
|
|
414
|
+
|
|
415
|
+
If you see `[HazoLog] Config file 'hazo_logs_config.ini' not found`, the library will still work with defaults. The warning shows the paths that were searched. Create the config file in your project root if you need custom settings.
|
|
416
|
+
|
|
417
|
+
### Logs not appearing in UI
|
|
418
|
+
|
|
419
|
+
1. Check that you're looking at the correct date (UI defaults to today)
|
|
420
|
+
2. Verify logs are being written to the `log_directory` configured
|
|
421
|
+
3. Check browser console for API errors
|
|
422
|
+
|
|
423
|
+
### Styles broken in log viewer
|
|
424
|
+
|
|
425
|
+
1. Ensure `tailwindContentPath` is in your Tailwind `content` array
|
|
426
|
+
2. Ensure `tailwindSafelist` is in your Tailwind `safelist` array
|
|
427
|
+
3. Rebuild your project after config changes (`npm run build`)
|
|
428
|
+
|
|
429
|
+
### Import errors in client components
|
|
430
|
+
|
|
431
|
+
```
|
|
432
|
+
Error: fs is not defined
|
|
433
|
+
Error: async_hooks is not defined
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
The core `hazo_logs` import is server-only. Use `createClientLogger` from `hazo_logs/ui` for browser logging.
|
|
437
|
+
|
|
438
|
+
### hazo_ui missing errors
|
|
439
|
+
|
|
440
|
+
The log viewer UI requires `hazo_ui` package. Install it:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
npm install hazo_ui
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
## Contributing
|
|
447
|
+
|
|
448
|
+
Contributions are welcome! Please:
|
|
449
|
+
|
|
450
|
+
1. Fork the repository
|
|
451
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
452
|
+
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
453
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
454
|
+
5. Open a Pull Request
|
|
455
|
+
|
|
456
|
+
### Development Setup
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
# Clone the repo
|
|
460
|
+
git clone https://github.com/pub12/hazo_logs.git
|
|
461
|
+
cd hazo_logs
|
|
462
|
+
|
|
463
|
+
# Install dependencies
|
|
464
|
+
npm install
|
|
465
|
+
|
|
466
|
+
# Run tests
|
|
467
|
+
npm test
|
|
468
|
+
|
|
469
|
+
# Build
|
|
470
|
+
npm run build
|
|
471
|
+
|
|
472
|
+
# Test with example app
|
|
473
|
+
npm run dev:test-app
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
## License
|
|
477
|
+
|
|
478
|
+
MIT - See LICENSE file for details
|
|
479
|
+
|
|
480
|
+
## Author
|
|
481
|
+
|
|
482
|
+
Pubs Abayasiri
|
|
483
|
+
|
|
484
|
+
## Links
|
|
485
|
+
|
|
486
|
+
- [GitHub Repository](https://github.com/pub12/hazo_logs)
|
|
487
|
+
- [Issue Tracker](https://github.com/pub12/hazo_logs/issues)
|
|
488
|
+
- [NPM Package](https://www.npmjs.com/package/hazo_logs)
|
|
489
|
+
|
|
490
|
+
## Related Packages
|
|
491
|
+
|
|
492
|
+
- [hazo_ui](https://github.com/pub12/hazo_ui) - UI component library (required for log viewer)
|
|
493
|
+
|
|
494
|
+
## Support
|
|
495
|
+
|
|
496
|
+
For issues and questions:
|
|
497
|
+
- Open an issue on [GitHub](https://github.com/pub12/hazo_logs/issues)
|
|
498
|
+
- Check existing issues for solutions
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* hazo_logs - Winston logger wrapper with singleton pattern
|
|
3
3
|
*
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
|
|
5
|
+
* imported in client components. For client-side logging, use:
|
|
6
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
7
|
+
*
|
|
4
8
|
* Usage:
|
|
5
9
|
* import { createLogger, runWithLogContext } from 'hazo_logs';
|
|
6
10
|
*
|
|
@@ -15,7 +19,8 @@
|
|
|
15
19
|
* });
|
|
16
20
|
*
|
|
17
21
|
* For UI components (requires Next.js, React, and hazo_ui):
|
|
18
|
-
* import { LogViewerPage
|
|
22
|
+
* import { LogViewerPage } from 'hazo_logs/ui';
|
|
23
|
+
* import { createLogApiHandler } from 'hazo_logs/ui/server';
|
|
19
24
|
*/
|
|
20
25
|
export { HazoLogger } from './lib/hazo_logger.js';
|
|
21
26
|
export { PackageLogger, createLogger } from './lib/package_logger.js';
|
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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,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/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* hazo_logs - Winston logger wrapper with singleton pattern
|
|
3
3
|
*
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
|
|
5
|
+
* imported in client components. For client-side logging, use:
|
|
6
|
+
* import { createClientLogger } from 'hazo_logs/ui';
|
|
7
|
+
*
|
|
4
8
|
* Usage:
|
|
5
9
|
* import { createLogger, runWithLogContext } from 'hazo_logs';
|
|
6
10
|
*
|
|
@@ -15,7 +19,8 @@
|
|
|
15
19
|
* });
|
|
16
20
|
*
|
|
17
21
|
* For UI components (requires Next.js, React, and hazo_ui):
|
|
18
|
-
* import { LogViewerPage
|
|
22
|
+
* import { LogViewerPage } from 'hazo_logs/ui';
|
|
23
|
+
* import { createLogApiHandler } from 'hazo_logs/ui/server';
|
|
19
24
|
*/
|
|
20
25
|
// Core logging
|
|
21
26
|
export { HazoLogger } from './lib/hazo_logger.js';
|
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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,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,cAAc;AACd,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,aAAa;AACb,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config_loader.d.ts","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,YAAY,CAAC;AAK1D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"config_loader.d.ts","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,YAAY,CAAC;AAK1D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAmC7D"}
|
|
@@ -15,7 +15,10 @@ const CONFIG_FILENAME = 'hazo_logs_config.ini';
|
|
|
15
15
|
export function loadConfig(configPath) {
|
|
16
16
|
const resolvedPath = configPath || findConfigFile();
|
|
17
17
|
if (!resolvedPath || !fs.existsSync(resolvedPath)) {
|
|
18
|
-
|
|
18
|
+
const searchPaths = getSearchPaths();
|
|
19
|
+
console.warn(`[HazoLog] Config file '${CONFIG_FILENAME}' not found. Using defaults.\n` +
|
|
20
|
+
` Searched in:\n${searchPaths.map(p => ` - ${p}`).join('\n')}\n` +
|
|
21
|
+
` To configure, create '${CONFIG_FILENAME}' in your project root.`);
|
|
19
22
|
return { ...DEFAULT_CONFIG };
|
|
20
23
|
}
|
|
21
24
|
try {
|
|
@@ -42,15 +45,21 @@ export function loadConfig(configPath) {
|
|
|
42
45
|
}
|
|
43
46
|
}
|
|
44
47
|
/**
|
|
45
|
-
*
|
|
48
|
+
* Get the list of paths to search for config file
|
|
46
49
|
*/
|
|
47
|
-
function
|
|
48
|
-
|
|
50
|
+
function getSearchPaths() {
|
|
51
|
+
return [
|
|
49
52
|
process.cwd(),
|
|
50
53
|
path.join(process.cwd(), '..'),
|
|
51
54
|
path.join(process.cwd(), '..', '..'),
|
|
52
55
|
path.join(process.cwd(), '..', '..', '..'),
|
|
53
56
|
];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Search for config file in current directory and parent directories
|
|
60
|
+
*/
|
|
61
|
+
function findConfigFile() {
|
|
62
|
+
const searchPaths = getSearchPaths();
|
|
54
63
|
for (const searchPath of searchPaths) {
|
|
55
64
|
const configPath = path.join(searchPath, CONFIG_FILENAME);
|
|
56
65
|
if (fs.existsSync(configPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config_loader.js","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,YAAY,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IAEpD,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"config_loader.js","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,11 @@ export declare class HazoLogger {
|
|
|
27
27
|
* Log an entry - called by PackageLogger
|
|
28
28
|
*/
|
|
29
29
|
log(entry: LogEntry): void;
|
|
30
|
+
/**
|
|
31
|
+
* Log a client-side entry - called by API handler
|
|
32
|
+
* Used for logs sent from the browser
|
|
33
|
+
*/
|
|
34
|
+
logClient(entry: Omit<LogEntry, 'executionId' | 'filename' | 'line'>): void;
|
|
30
35
|
/**
|
|
31
36
|
* Get current configuration
|
|
32
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hazo_logger.d.ts","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK1D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAMP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;WACW,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAO1D;;OAEG;WACW,KAAK,IAAI,IAAI;IAO3B;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKjC;;OAEG;IACI,SAAS,IAAI,aAAa;IAIjC;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B,OAAO,CAAC,mBAAmB;CAgB5B"}
|
|
1
|
+
{"version":3,"file":"hazo_logger.d.ts","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK1D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAMP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;WACW,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAO1D;;OAEG;WACW,KAAK,IAAI,IAAI;IAO3B;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKjC;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI;IAYlF;;OAEG;IACI,SAAS,IAAI,aAAa;IAIjC;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B,OAAO,CAAC,mBAAmB;CAgB5B"}
|
package/dist/lib/hazo_logger.js
CHANGED
|
@@ -53,6 +53,21 @@ export class HazoLogger {
|
|
|
53
53
|
const { level, message, ...meta } = entry;
|
|
54
54
|
this.winstonLogger.log(level, message, meta);
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Log a client-side entry - called by API handler
|
|
58
|
+
* Used for logs sent from the browser
|
|
59
|
+
*/
|
|
60
|
+
logClient(entry) {
|
|
61
|
+
const fullEntry = {
|
|
62
|
+
...entry,
|
|
63
|
+
executionId: this.executionId,
|
|
64
|
+
filename: 'client',
|
|
65
|
+
line: 0,
|
|
66
|
+
source: 'client',
|
|
67
|
+
};
|
|
68
|
+
const { level, message, ...meta } = fullEntry;
|
|
69
|
+
this.winstonLogger.log(level, message, meta);
|
|
70
|
+
}
|
|
56
71
|
/**
|
|
57
72
|
* Get current configuration
|
|
58
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hazo_logger.js","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hazo_logger.js","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { HazoLogger } from './hazo_logger.js';
|
|
|
2
2
|
export { PackageLogger, createLogger } from './package_logger.js';
|
|
3
3
|
export { loadConfig } from './config_loader.js';
|
|
4
4
|
export { readLogs, getAvailableLogDates, getUniquePackages } from './log-reader.js';
|
|
5
|
-
export type { Logger, LogLevel, LogData, LogEntry, HazoLogConfig, PackageLoggerOptions, } from './types.js';
|
|
5
|
+
export type { Logger, LogLevel, LogData, LogEntry, LogSource, HazoLogConfig, PackageLoggerOptions, } from './types.js';
|
|
6
6
|
export type { ReadLogsOptions, LogQueryResult } from './log-reader.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpF,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpF,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|