@octaviaflow/logger 1.0.1 → 1.1.1
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 +72 -66
- package/dist/constants.d.ts +1 -1
- package/dist/context/manager.d.ts +1 -1
- package/dist/formatters/index.d.ts +1 -1
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js.map +10 -10
- package/dist/logger.d.ts +3 -3
- package/dist/logger.d.ts.map +1 -1
- package/dist/presets/backend.d.ts +3 -3
- package/dist/presets/backend.d.ts.map +1 -1
- package/dist/presets/engine.d.ts +3 -3
- package/dist/presets/engine.d.ts.map +1 -1
- package/dist/presets/index.d.ts +3 -3
- package/dist/presets/index.js +18 -3
- package/dist/presets/index.js.map +14 -14
- package/dist/presets/ui.d.ts +3 -3
- package/dist/presets/ui.d.ts.map +1 -1
- package/dist/transports/base.d.ts +2 -2
- package/dist/transports/base.d.ts.map +1 -1
- package/dist/transports/console.d.ts +2 -2
- package/dist/transports/file.d.ts +2 -2
- package/dist/transports/file.d.ts.map +1 -1
- package/dist/transports/http.d.ts +2 -2
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/index.d.ts +4 -4
- package/dist/utils/helpers.d.ts.map +1 -1
- package/package.json +17 -13
- package/types/logger.d.ts +114 -86
package/README.md
CHANGED
|
@@ -26,24 +26,24 @@ bun add @octaviaflow/logger
|
|
|
26
26
|
### Backend Service
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { createBackendLogger } from
|
|
29
|
+
import { createBackendLogger } from "@octaviaflow/logger/presets";
|
|
30
30
|
|
|
31
31
|
const logger = createBackendLogger({
|
|
32
|
-
level:
|
|
33
|
-
version:
|
|
32
|
+
level: "info",
|
|
33
|
+
version: "1.0.0",
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
-
logger.info(
|
|
36
|
+
logger.info("Server started", { port: 3000 });
|
|
37
37
|
|
|
38
38
|
// Request logging
|
|
39
39
|
logger.startRequest({
|
|
40
|
-
requestId:
|
|
41
|
-
method:
|
|
42
|
-
path:
|
|
43
|
-
ip:
|
|
44
|
-
protocol:
|
|
45
|
-
hostname:
|
|
46
|
-
url:
|
|
40
|
+
requestId: "req_123",
|
|
41
|
+
method: "GET",
|
|
42
|
+
path: "/api/workflows",
|
|
43
|
+
ip: "127.0.0.1",
|
|
44
|
+
protocol: "http",
|
|
45
|
+
hostname: "localhost",
|
|
46
|
+
url: "http://localhost:3000/api/workflows",
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
// ... handle request ...
|
|
@@ -54,22 +54,22 @@ logger.endRequest(200, 145);
|
|
|
54
54
|
### Engine Service
|
|
55
55
|
|
|
56
56
|
```typescript
|
|
57
|
-
import { createEngineLogger } from
|
|
57
|
+
import { createEngineLogger } from "@octaviaflow/logger/presets";
|
|
58
58
|
|
|
59
59
|
const logger = createEngineLogger({
|
|
60
|
-
level:
|
|
61
|
-
version:
|
|
62
|
-
workerId:
|
|
60
|
+
level: "info",
|
|
61
|
+
version: "1.0.0",
|
|
62
|
+
workerId: "worker_1",
|
|
63
63
|
});
|
|
64
64
|
|
|
65
65
|
// Workflow logging
|
|
66
66
|
logger.startWorkflow({
|
|
67
|
-
workflowId:
|
|
68
|
-
workflowName:
|
|
69
|
-
executionId:
|
|
67
|
+
workflowId: "wf_123",
|
|
68
|
+
workflowName: "Data Sync",
|
|
69
|
+
executionId: "exec_456",
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
-
logger.info(
|
|
72
|
+
logger.info("Processing workflow step");
|
|
73
73
|
|
|
74
74
|
logger.endWorkflow(true);
|
|
75
75
|
```
|
|
@@ -77,18 +77,18 @@ logger.endWorkflow(true);
|
|
|
77
77
|
### UI Service
|
|
78
78
|
|
|
79
79
|
```typescript
|
|
80
|
-
import { createUILogger } from
|
|
80
|
+
import { createUILogger } from "@octaviaflow/logger/presets";
|
|
81
81
|
|
|
82
82
|
const logger = createUILogger({
|
|
83
|
-
level:
|
|
84
|
-
version:
|
|
83
|
+
level: "warn",
|
|
84
|
+
version: "1.0.0",
|
|
85
85
|
enableRemote: true,
|
|
86
|
-
remoteUrl:
|
|
86
|
+
remoteUrl: "https://api.example.com/logs",
|
|
87
87
|
});
|
|
88
88
|
|
|
89
|
-
logger.info(
|
|
90
|
-
action:
|
|
91
|
-
component:
|
|
89
|
+
logger.info("User action", {
|
|
90
|
+
action: "button_click",
|
|
91
|
+
component: "WorkflowBuilder",
|
|
92
92
|
});
|
|
93
93
|
```
|
|
94
94
|
|
|
@@ -97,38 +97,38 @@ logger.info('User action', {
|
|
|
97
97
|
### Basic Logging
|
|
98
98
|
|
|
99
99
|
```typescript
|
|
100
|
-
logger.fatal(
|
|
101
|
-
logger.error(
|
|
102
|
-
logger.warn(
|
|
103
|
-
logger.info(
|
|
104
|
-
logger.debug(
|
|
105
|
-
logger.trace(
|
|
100
|
+
logger.fatal("Fatal error");
|
|
101
|
+
logger.error("Error occurred");
|
|
102
|
+
logger.warn("Warning message");
|
|
103
|
+
logger.info("Info message");
|
|
104
|
+
logger.debug("Debug information");
|
|
105
|
+
logger.trace("Trace details");
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
### Specialized Logging
|
|
109
109
|
|
|
110
110
|
```typescript
|
|
111
111
|
// Audit logging
|
|
112
|
-
logger.audit(
|
|
113
|
-
actor: { id:
|
|
114
|
-
resource: { type:
|
|
115
|
-
result:
|
|
112
|
+
logger.audit("user.login", {
|
|
113
|
+
actor: { id: "user_123", type: "user" },
|
|
114
|
+
resource: { type: "session", id: "session_456" },
|
|
115
|
+
result: "success",
|
|
116
116
|
});
|
|
117
117
|
|
|
118
118
|
// Security logging
|
|
119
|
-
logger.security(
|
|
120
|
-
event:
|
|
121
|
-
severity:
|
|
122
|
-
action:
|
|
119
|
+
logger.security("auth_failure", {
|
|
120
|
+
event: "auth_failure",
|
|
121
|
+
severity: "high",
|
|
122
|
+
action: "blocked",
|
|
123
123
|
});
|
|
124
124
|
|
|
125
125
|
// Performance logging
|
|
126
|
-
logger.performance(
|
|
126
|
+
logger.performance("api.request", 145, {
|
|
127
127
|
metrics: { dbQueries: 3, cacheHits: 5 },
|
|
128
128
|
});
|
|
129
129
|
|
|
130
130
|
// Metrics
|
|
131
|
-
logger.metric(
|
|
131
|
+
logger.metric("api.requests.total", 100);
|
|
132
132
|
```
|
|
133
133
|
|
|
134
134
|
### Context Management
|
|
@@ -136,13 +136,13 @@ logger.metric('api.requests.total', 100);
|
|
|
136
136
|
```typescript
|
|
137
137
|
// Set context for current async scope
|
|
138
138
|
logger.setContext({
|
|
139
|
-
user: { userId:
|
|
139
|
+
user: { userId: "user_123", organizationId: "org_456" },
|
|
140
140
|
});
|
|
141
141
|
|
|
142
142
|
// Create child logger with additional context
|
|
143
143
|
const apiLogger = logger.child({
|
|
144
|
-
component:
|
|
145
|
-
endpoint:
|
|
144
|
+
component: "api",
|
|
145
|
+
endpoint: "/api/workflows",
|
|
146
146
|
});
|
|
147
147
|
|
|
148
148
|
// Clear context
|
|
@@ -153,15 +153,15 @@ logger.clearContext();
|
|
|
153
153
|
|
|
154
154
|
```typescript
|
|
155
155
|
// Profile operations
|
|
156
|
-
logger.profile(
|
|
156
|
+
logger.profile("operation_1");
|
|
157
157
|
// ... do work ...
|
|
158
|
-
logger.profile(
|
|
158
|
+
logger.profile("operation_1"); // Logs duration
|
|
159
159
|
|
|
160
160
|
// Start timer
|
|
161
161
|
const getElapsed = logger.startTimer();
|
|
162
162
|
// ... do work ...
|
|
163
163
|
const duration = getElapsed();
|
|
164
|
-
logger.info(
|
|
164
|
+
logger.info("Operation completed", { duration });
|
|
165
165
|
|
|
166
166
|
// Flush and close
|
|
167
167
|
await logger.flush();
|
|
@@ -173,39 +173,39 @@ await logger.close();
|
|
|
173
173
|
### Custom Logger
|
|
174
174
|
|
|
175
175
|
```typescript
|
|
176
|
-
import { Logger } from
|
|
176
|
+
import { Logger } from "@octaviaflow/logger";
|
|
177
177
|
|
|
178
178
|
const logger = new Logger({
|
|
179
|
-
service:
|
|
180
|
-
environment:
|
|
181
|
-
version:
|
|
182
|
-
level:
|
|
183
|
-
format:
|
|
179
|
+
service: "backend",
|
|
180
|
+
environment: "production",
|
|
181
|
+
version: "1.0.0",
|
|
182
|
+
level: "info",
|
|
183
|
+
format: "json",
|
|
184
184
|
transports: [
|
|
185
185
|
{
|
|
186
|
-
type:
|
|
186
|
+
type: "console",
|
|
187
187
|
enabled: true,
|
|
188
|
-
level:
|
|
189
|
-
format:
|
|
188
|
+
level: "info",
|
|
189
|
+
format: "pretty",
|
|
190
190
|
},
|
|
191
191
|
{
|
|
192
|
-
type:
|
|
192
|
+
type: "file",
|
|
193
193
|
enabled: true,
|
|
194
|
-
level:
|
|
194
|
+
level: "info",
|
|
195
195
|
file: {
|
|
196
|
-
path:
|
|
197
|
-
maxSize:
|
|
196
|
+
path: "./logs/app.log",
|
|
197
|
+
maxSize: "10m",
|
|
198
198
|
maxFiles: 10,
|
|
199
199
|
compress: true,
|
|
200
|
-
datePattern:
|
|
200
|
+
datePattern: "YYYY-MM-DD",
|
|
201
201
|
},
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
|
-
type:
|
|
204
|
+
type: "http",
|
|
205
205
|
enabled: true,
|
|
206
|
-
level:
|
|
206
|
+
level: "error",
|
|
207
207
|
http: {
|
|
208
|
-
url:
|
|
208
|
+
url: "https://api.example.com/logs",
|
|
209
209
|
batchSize: 10,
|
|
210
210
|
flushInterval: 5000,
|
|
211
211
|
retry: { attempts: 3, delay: 1000 },
|
|
@@ -214,7 +214,7 @@ const logger = new Logger({
|
|
|
214
214
|
],
|
|
215
215
|
sanitize: {
|
|
216
216
|
enabled: true,
|
|
217
|
-
fields: [
|
|
217
|
+
fields: ["password", "token", "apiKey"],
|
|
218
218
|
},
|
|
219
219
|
handleExceptions: true,
|
|
220
220
|
handleRejections: true,
|
|
@@ -224,6 +224,7 @@ const logger = new Logger({
|
|
|
224
224
|
## Log Formats
|
|
225
225
|
|
|
226
226
|
### JSON (Default for Production)
|
|
227
|
+
|
|
227
228
|
```json
|
|
228
229
|
{
|
|
229
230
|
"timestamp": "2024-11-21T10:30:45.123Z",
|
|
@@ -237,16 +238,19 @@ const logger = new Logger({
|
|
|
237
238
|
```
|
|
238
239
|
|
|
239
240
|
### Pretty (Default for Development)
|
|
241
|
+
|
|
240
242
|
```
|
|
241
243
|
2024-11-21T10:30:45.123Z INFO [backend] API request completed {"requestId":"req_abc123","statusCode":200}
|
|
242
244
|
```
|
|
243
245
|
|
|
244
246
|
### Compact
|
|
247
|
+
|
|
245
248
|
```
|
|
246
249
|
10:30:45 I [backend] API request completed
|
|
247
250
|
```
|
|
248
251
|
|
|
249
252
|
### ECS (Elastic Common Schema)
|
|
253
|
+
|
|
250
254
|
```json
|
|
251
255
|
{
|
|
252
256
|
"@timestamp": "2024-11-21T10:30:45.123Z",
|
|
@@ -260,6 +264,7 @@ const logger = new Logger({
|
|
|
260
264
|
## File Rotation
|
|
261
265
|
|
|
262
266
|
Logs are automatically rotated based on:
|
|
267
|
+
|
|
263
268
|
- **Size**: When file exceeds `maxSize` (default: 10MB)
|
|
264
269
|
- **Date**: Daily rotation with `datePattern` (default: YYYY-MM-DD)
|
|
265
270
|
- **Compression**: Old files are gzipped (optional)
|
|
@@ -292,6 +297,7 @@ bun run typecheck
|
|
|
292
297
|
## Performance
|
|
293
298
|
|
|
294
299
|
Benchmarked on Apple M1:
|
|
300
|
+
|
|
295
301
|
- Simple log: ~0.05ms
|
|
296
302
|
- Log with metadata: ~0.08ms
|
|
297
303
|
- File write: ~0.15ms
|
package/dist/constants.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;CACpD;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAElD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM;CAUnD;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IACnC,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAElD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM;IAqClD,OAAO,CAAC,qBAAqB;CAc9B;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IACpC,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAElD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;CACpD;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAElD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM;CAUnD;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IACnC,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAElD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM;IAqClD,OAAO,CAAC,qBAAqB;CAc9B;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IACpC,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAElD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM;CAOnD;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAChC,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAElD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM;IAuBlD,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,gBAAgB;CAoCzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,gBAAqB,GAC7B,SAAS,CAaX"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { Logger } from
|
|
2
|
-
export { BaseTransport, ConsoleTransport, FileTransport, HTTPTransport, } from
|
|
3
|
-
export { createFormatter, JSONFormatter, PrettyFormatter, CompactFormatter, ECSFormatter, type Formatter, type FormatterOptions, } from
|
|
4
|
-
export { ContextManager, contextManager } from
|
|
5
|
-
export { parseSize, formatBytes, formatDuration, getHostname, getPid, generateId, sanitize, deepMerge, formatDateForFile, safeStringify, ensureDir, isProduction, isDevelopment, } from
|
|
6
|
-
export { LOG_LEVELS, LOG_LEVEL_NAMES, COLORS } from
|
|
7
|
-
export type * from
|
|
1
|
+
export { Logger } from "./logger.js";
|
|
2
|
+
export { BaseTransport, ConsoleTransport, FileTransport, HTTPTransport, } from "./transports/index.js";
|
|
3
|
+
export { createFormatter, JSONFormatter, PrettyFormatter, CompactFormatter, ECSFormatter, type Formatter, type FormatterOptions, } from "./formatters/index.js";
|
|
4
|
+
export { ContextManager, contextManager } from "./context/manager.js";
|
|
5
|
+
export { parseSize, formatBytes, formatDuration, getHostname, getPid, generateId, sanitize, deepMerge, formatDateForFile, safeStringify, ensureDir, isProduction, isDevelopment, } from "./utils/helpers.js";
|
|
6
|
+
export { LOG_LEVELS, LOG_LEVEL_NAMES, COLORS } from "./constants.js";
|
|
7
|
+
export type * from "../types/logger.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|