@arivlabs/logger 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +47 -6
- package/dist/index.d.ts +37 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +69 -6
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +71 -0
- package/dist/index.test.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to `@arivlabs/logger` will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.4.0] - 2024-12-23
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Sensitive data redaction**: Automatic masking of sensitive fields in logs
|
|
13
|
+
- Default redaction for common sensitive fields: `password`, `secret`, `token`, `apiKey`, `accessToken`, `refreshToken`, `secretAccessKey`, `privateKey`, etc.
|
|
14
|
+
- Support for nested field redaction with wildcard patterns (e.g., `*.password`)
|
|
15
|
+
- Request header redaction: `authorization`, `cookie`, `x-api-key`
|
|
16
|
+
- AWS credential redaction: `credentials.accessKeyId`, `credentials.secretAccessKey`, `credentials.sessionToken`
|
|
17
|
+
- `redact` configuration option for custom redaction paths
|
|
18
|
+
- Configurable censor text (default: `[REDACTED]`)
|
|
19
|
+
- Option to remove redacted fields entirely instead of masking
|
|
20
|
+
- Exported `DEFAULT_REDACT_PATHS` constant for reference
|
|
21
|
+
|
|
22
|
+
## [1.3.0] - 2024-12-23
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **Flexible error property**: Both `{ err: error }` and `{ error: error }` now work
|
|
27
|
+
- Auto-converts `error` property to `err` for proper pino serialization
|
|
28
|
+
- No more footgun - developers can use either naming convention
|
|
29
|
+
|
|
8
30
|
## [1.2.0] - 2024-12-23
|
|
9
31
|
|
|
10
32
|
### Added
|
package/README.md
CHANGED
|
@@ -22,9 +22,10 @@ const logger = createLogger({ service: 'api-gateway' });
|
|
|
22
22
|
// Basic logging - intuitive style (recommended)
|
|
23
23
|
logger.info('Server started', { port: 3000 });
|
|
24
24
|
|
|
25
|
-
// Error logging -
|
|
26
|
-
logger.error('Request failed', { err: error }); // ✅
|
|
27
|
-
|
|
25
|
+
// Error logging - both { err } and { error } work
|
|
26
|
+
logger.error('Request failed', { err: error }); // ✅ Works
|
|
27
|
+
logger.error('Request failed', { error: error }); // ✅ Also works (auto-converted)
|
|
28
|
+
// logger.error('Request failed', { error: err.message }); // ❌ Bad - pass the Error object, not .message
|
|
28
29
|
|
|
29
30
|
// Also works: pino native style
|
|
30
31
|
logger.info({ msg: 'Server started', port: 3000 });
|
|
@@ -76,6 +77,45 @@ const logger = createLogger({
|
|
|
76
77
|
environment: 'production', // Optional: defaults to NODE_ENV
|
|
77
78
|
level: 'info', // Optional: debug, info, warn, error
|
|
78
79
|
pretty: false, // Optional: defaults to true in development
|
|
80
|
+
redact: {
|
|
81
|
+
// Optional: add custom paths to redact (in addition to defaults)
|
|
82
|
+
paths: ['user.ssn', 'customSecret'],
|
|
83
|
+
censor: '[MASKED]', // Optional: default is '[REDACTED]'
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Sensitive Data Redaction
|
|
89
|
+
|
|
90
|
+
The logger automatically redacts common sensitive fields from logs. This protects against accidental credential exposure.
|
|
91
|
+
|
|
92
|
+
### Default Redacted Fields
|
|
93
|
+
|
|
94
|
+
These fields are **automatically masked** (shown as `[REDACTED]`):
|
|
95
|
+
|
|
96
|
+
| Category | Fields |
|
|
97
|
+
| ------------------- | ----------------------------------------------------- |
|
|
98
|
+
| **Secrets** | `password`, `secret`, `token`, `apiKey`, `privateKey` |
|
|
99
|
+
| **Auth Tokens** | `accessToken`, `refreshToken`, `sessionToken` |
|
|
100
|
+
| **AWS Credentials** | `secretAccessKey`, `credentials.*` |
|
|
101
|
+
| **Request Headers** | `req.headers.authorization`, `req.headers.cookie` |
|
|
102
|
+
| **Nested** | `*.password`, `*.secret`, `*.token`, `*.apiKey` |
|
|
103
|
+
|
|
104
|
+
### Adding Custom Redaction Paths
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
const logger = createLogger({
|
|
108
|
+
service: 'api-gateway',
|
|
109
|
+
redact: {
|
|
110
|
+
// Add project-specific sensitive fields
|
|
111
|
+
paths: [
|
|
112
|
+
'user.ssn', // Exact path
|
|
113
|
+
'customer.creditCard', // Exact path
|
|
114
|
+
'*.bankAccount', // Any object with bankAccount
|
|
115
|
+
],
|
|
116
|
+
censor: '[MASKED]', // Custom mask text
|
|
117
|
+
remove: false, // Set true to remove key entirely
|
|
118
|
+
},
|
|
79
119
|
});
|
|
80
120
|
```
|
|
81
121
|
|
|
@@ -105,18 +145,19 @@ Pretty output (development):
|
|
|
105
145
|
|
|
106
146
|
## Error Logging Best Practices
|
|
107
147
|
|
|
108
|
-
|
|
148
|
+
Pass the Error object directly - both `err` and `error` keys work:
|
|
109
149
|
|
|
110
150
|
```typescript
|
|
111
151
|
try {
|
|
112
152
|
await someOperation();
|
|
113
153
|
} catch (error) {
|
|
114
|
-
// ✅
|
|
154
|
+
// ✅ Both work - error is auto-converted to err for pino
|
|
115
155
|
logger.error('Operation failed', { err: error });
|
|
156
|
+
logger.error('Operation failed', { error }); // Same result
|
|
116
157
|
|
|
117
158
|
// ❌ Bad - loses error type, stack, and custom properties
|
|
118
159
|
logger.error('Operation failed', { error: error.message });
|
|
119
|
-
logger.error('Operation failed', {
|
|
160
|
+
logger.error('Operation failed', { message: error.message, stack: error.stack });
|
|
120
161
|
}
|
|
121
162
|
```
|
|
122
163
|
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,29 @@ export type ServiceName = 'api-gateway' | 'queue-manager' | 'scanner-result-proc
|
|
|
6
6
|
* Domain names for structured logging
|
|
7
7
|
*/
|
|
8
8
|
export type LogDomain = 'discovery' | 'auth' | 'connectors' | 'inventory' | 'lineage' | 'onboarding' | 'proxy' | 'users' | 'dashboard' | 'internal' | 'storage' | 'email' | 'queue' | 'system';
|
|
9
|
+
/**
|
|
10
|
+
* Redaction configuration for masking sensitive data
|
|
11
|
+
*/
|
|
12
|
+
export interface RedactConfig {
|
|
13
|
+
/**
|
|
14
|
+
* Paths to redact (uses pino's redact syntax)
|
|
15
|
+
* Examples: ['password', 'secret', 'req.headers.authorization', '*.token']
|
|
16
|
+
*/
|
|
17
|
+
paths?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* String to replace sensitive values with (default: '[REDACTED]')
|
|
20
|
+
*/
|
|
21
|
+
censor?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Whether to remove the key entirely instead of masking (default: false)
|
|
24
|
+
*/
|
|
25
|
+
remove?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Default sensitive field patterns that are always redacted
|
|
29
|
+
* These are common security-sensitive fields
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_REDACT_PATHS: readonly ["password", "secret", "token", "apiKey", "api_key", "accessToken", "access_token", "refreshToken", "refresh_token", "sessionToken", "session_token", "secretAccessKey", "secret_access_key", "privateKey", "private_key", "*.password", "*.secret", "*.token", "*.apiKey", "*.api_key", "*.accessToken", "*.secretAccessKey", "*.privateKey", "req.headers.authorization", "req.headers.cookie", "req.headers[\"x-api-key\"]", "credentials.accessKeyId", "credentials.secretAccessKey", "credentials.sessionToken"];
|
|
9
32
|
/**
|
|
10
33
|
* Logger configuration options
|
|
11
34
|
*/
|
|
@@ -18,18 +41,26 @@ export interface LoggerConfig {
|
|
|
18
41
|
level?: string;
|
|
19
42
|
/** Enable pretty printing (defaults to true in development) */
|
|
20
43
|
pretty?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Redaction configuration for masking sensitive data
|
|
46
|
+
* Sensitive fields are automatically masked. Use this to add custom paths.
|
|
47
|
+
*/
|
|
48
|
+
redact?: RedactConfig;
|
|
21
49
|
}
|
|
22
50
|
/**
|
|
23
51
|
* Log data object
|
|
24
|
-
*
|
|
52
|
+
* Pass Error objects as `err` or `error` - both work and will be serialized properly
|
|
25
53
|
*
|
|
26
54
|
* @example
|
|
27
|
-
* logger.error('Request failed', { err: error });
|
|
55
|
+
* logger.error('Request failed', { err: error }); // Works
|
|
56
|
+
* logger.error('Request failed', { error: error }); // Also works - auto-converted to err
|
|
28
57
|
* logger.error('Request failed', { error: err.message }); // Bad - loses error type/stack
|
|
29
58
|
*/
|
|
30
59
|
export type LogData = Record<string, unknown> & {
|
|
31
60
|
/** Pass Error objects here for proper serialization (type, message, stack, custom props) */
|
|
32
61
|
err?: Error | unknown;
|
|
62
|
+
/** Alternative to err - will be auto-converted to err if it's an Error object */
|
|
63
|
+
error?: Error | unknown;
|
|
33
64
|
};
|
|
34
65
|
/**
|
|
35
66
|
* Flexible log method signature supporting multiple calling conventions
|
|
@@ -93,9 +124,10 @@ export interface RequestContext {
|
|
|
93
124
|
* // Basic logging (intuitive style - recommended)
|
|
94
125
|
* logger.info('Server started', { port: 3000 });
|
|
95
126
|
*
|
|
96
|
-
* // Error logging -
|
|
97
|
-
* logger.error('Request failed', { err: error });
|
|
98
|
-
* logger.error('Request failed', { error:
|
|
127
|
+
* // Error logging - both { err } and { error } work
|
|
128
|
+
* logger.error('Request failed', { err: error }); // ✅ Works
|
|
129
|
+
* logger.error('Request failed', { error: error }); // ✅ Also works
|
|
130
|
+
* logger.error('Request failed', { error: err.message }); // ❌ Bad - pass Error object
|
|
99
131
|
*
|
|
100
132
|
* // Also works: pino native style
|
|
101
133
|
* logger.info({ msg: 'Server started', port: 3000 });
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,eAAe,GACf,0BAA0B,GAC1B,sBAAsB,GACtB,mBAAmB,GACnB,UAAU,GACV,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,MAAM,GACN,YAAY,GACZ,WAAW,GACX,SAAS,GACT,YAAY,GACZ,OAAO,GACP,OAAO,GACP,WAAW,GACX,UAAU,GACV,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,10 +3,62 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_REDACT_PATHS = void 0;
|
|
6
7
|
exports.createLogger = createLogger;
|
|
7
8
|
exports.createDomainLogger = createDomainLogger;
|
|
8
9
|
exports.createRequestLogger = createRequestLogger;
|
|
9
10
|
const pino_1 = __importDefault(require("pino"));
|
|
11
|
+
/**
|
|
12
|
+
* Default sensitive field patterns that are always redacted
|
|
13
|
+
* These are common security-sensitive fields
|
|
14
|
+
*/
|
|
15
|
+
exports.DEFAULT_REDACT_PATHS = [
|
|
16
|
+
// Authentication & Secrets
|
|
17
|
+
'password',
|
|
18
|
+
'secret',
|
|
19
|
+
'token',
|
|
20
|
+
'apiKey',
|
|
21
|
+
'api_key',
|
|
22
|
+
'accessToken',
|
|
23
|
+
'access_token',
|
|
24
|
+
'refreshToken',
|
|
25
|
+
'refresh_token',
|
|
26
|
+
'sessionToken',
|
|
27
|
+
'session_token',
|
|
28
|
+
'secretAccessKey',
|
|
29
|
+
'secret_access_key',
|
|
30
|
+
'privateKey',
|
|
31
|
+
'private_key',
|
|
32
|
+
// Nested paths (common patterns)
|
|
33
|
+
'*.password',
|
|
34
|
+
'*.secret',
|
|
35
|
+
'*.token',
|
|
36
|
+
'*.apiKey',
|
|
37
|
+
'*.api_key',
|
|
38
|
+
'*.accessToken',
|
|
39
|
+
'*.secretAccessKey',
|
|
40
|
+
'*.privateKey',
|
|
41
|
+
// Request headers
|
|
42
|
+
'req.headers.authorization',
|
|
43
|
+
'req.headers.cookie',
|
|
44
|
+
'req.headers["x-api-key"]',
|
|
45
|
+
// AWS credentials
|
|
46
|
+
'credentials.accessKeyId',
|
|
47
|
+
'credentials.secretAccessKey',
|
|
48
|
+
'credentials.sessionToken',
|
|
49
|
+
];
|
|
50
|
+
/**
|
|
51
|
+
* Normalize error properties in log data
|
|
52
|
+
* Converts `error` to `err` for proper pino serialization
|
|
53
|
+
*/
|
|
54
|
+
function normalizeLogData(data) {
|
|
55
|
+
// If data has 'error' property that's an Error, rename to 'err' for pino serializer
|
|
56
|
+
if (data.error instanceof Error && !data.err) {
|
|
57
|
+
const { error, ...rest } = data;
|
|
58
|
+
return { ...rest, err: error };
|
|
59
|
+
}
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
10
62
|
/**
|
|
11
63
|
* Wrap a pino log method to support flexible calling conventions
|
|
12
64
|
*/
|
|
@@ -15,7 +67,8 @@ function wrapLogMethod(pinoLogger, level) {
|
|
|
15
67
|
if (typeof msgOrObj === 'string') {
|
|
16
68
|
// Called as: logger.info('message') or logger.info('message', { data })
|
|
17
69
|
if (dataOrMsg && typeof dataOrMsg === 'object') {
|
|
18
|
-
|
|
70
|
+
const normalized = normalizeLogData(dataOrMsg);
|
|
71
|
+
pinoLogger[level](normalized, msgOrObj);
|
|
19
72
|
}
|
|
20
73
|
else {
|
|
21
74
|
pinoLogger[level](msgOrObj);
|
|
@@ -23,11 +76,12 @@ function wrapLogMethod(pinoLogger, level) {
|
|
|
23
76
|
}
|
|
24
77
|
else {
|
|
25
78
|
// Called as: logger.info({ msg: 'message', data }) or logger.info({ data }, 'message')
|
|
79
|
+
const normalized = normalizeLogData(msgOrObj);
|
|
26
80
|
if (typeof dataOrMsg === 'string') {
|
|
27
|
-
pinoLogger[level](
|
|
81
|
+
pinoLogger[level](normalized, dataOrMsg);
|
|
28
82
|
}
|
|
29
83
|
else {
|
|
30
|
-
pinoLogger[level](
|
|
84
|
+
pinoLogger[level](normalized);
|
|
31
85
|
}
|
|
32
86
|
}
|
|
33
87
|
};
|
|
@@ -77,9 +131,10 @@ function wrapLogger(pinoLogger) {
|
|
|
77
131
|
* // Basic logging (intuitive style - recommended)
|
|
78
132
|
* logger.info('Server started', { port: 3000 });
|
|
79
133
|
*
|
|
80
|
-
* // Error logging -
|
|
81
|
-
* logger.error('Request failed', { err: error });
|
|
82
|
-
* logger.error('Request failed', { error:
|
|
134
|
+
* // Error logging - both { err } and { error } work
|
|
135
|
+
* logger.error('Request failed', { err: error }); // ✅ Works
|
|
136
|
+
* logger.error('Request failed', { error: error }); // ✅ Also works
|
|
137
|
+
* logger.error('Request failed', { error: err.message }); // ❌ Bad - pass Error object
|
|
83
138
|
*
|
|
84
139
|
* // Also works: pino native style
|
|
85
140
|
* logger.info({ msg: 'Server started', port: 3000 });
|
|
@@ -107,6 +162,8 @@ function createLogger(config) {
|
|
|
107
162
|
const isDevelopment = config.environment === 'development' || process.env.NODE_ENV === 'development';
|
|
108
163
|
const isLocal = process.env.ENV === 'local';
|
|
109
164
|
const shouldPrettyPrint = config.pretty ?? (isDevelopment || isLocal);
|
|
165
|
+
// Build redact paths: defaults + custom
|
|
166
|
+
const redactPaths = [...exports.DEFAULT_REDACT_PATHS, ...(config.redact?.paths || [])];
|
|
110
167
|
const pinoOptions = {
|
|
111
168
|
name: config.service,
|
|
112
169
|
level: config.level || process.env.LOG_LEVEL || (isDevelopment ? 'debug' : 'info'),
|
|
@@ -117,6 +174,12 @@ function createLogger(config) {
|
|
|
117
174
|
},
|
|
118
175
|
// Timestamp format (CloudWatch-friendly ISO 8601)
|
|
119
176
|
timestamp: () => `,"timestamp":"${new Date().toISOString()}"`,
|
|
177
|
+
// Redact sensitive fields (masks by default, can be configured to remove)
|
|
178
|
+
redact: {
|
|
179
|
+
paths: redactPaths,
|
|
180
|
+
censor: config.redact?.censor ?? '[REDACTED]',
|
|
181
|
+
remove: config.redact?.remove ?? false,
|
|
182
|
+
},
|
|
120
183
|
// Serializers for common objects
|
|
121
184
|
serializers: {
|
|
122
185
|
req: pino_1.default.stdSerializers.req,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.test.js
CHANGED
|
@@ -77,6 +77,61 @@ describe('@arivlabs/logger', () => {
|
|
|
77
77
|
});
|
|
78
78
|
expect(logger).toBeDefined();
|
|
79
79
|
});
|
|
80
|
+
it('should create logger with custom redact paths', () => {
|
|
81
|
+
const logger = (0, index_1.createLogger)({
|
|
82
|
+
service: 'api-gateway',
|
|
83
|
+
redact: {
|
|
84
|
+
paths: ['customSecret', 'user.ssn'],
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
expect(logger).toBeDefined();
|
|
88
|
+
});
|
|
89
|
+
it('should create logger with custom redact censor', () => {
|
|
90
|
+
const logger = (0, index_1.createLogger)({
|
|
91
|
+
service: 'api-gateway',
|
|
92
|
+
redact: {
|
|
93
|
+
paths: ['secret'],
|
|
94
|
+
censor: '***MASKED***',
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
expect(logger).toBeDefined();
|
|
98
|
+
});
|
|
99
|
+
it('should create logger with redact remove option', () => {
|
|
100
|
+
const logger = (0, index_1.createLogger)({
|
|
101
|
+
service: 'api-gateway',
|
|
102
|
+
redact: {
|
|
103
|
+
paths: ['secret'],
|
|
104
|
+
remove: true,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
expect(logger).toBeDefined();
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe('redaction defaults', () => {
|
|
111
|
+
it('should have default redact paths for common sensitive fields', () => {
|
|
112
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('password');
|
|
113
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('secret');
|
|
114
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('token');
|
|
115
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('apiKey');
|
|
116
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('accessToken');
|
|
117
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('refreshToken');
|
|
118
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('secretAccessKey');
|
|
119
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('privateKey');
|
|
120
|
+
});
|
|
121
|
+
it('should have default redact paths for nested fields', () => {
|
|
122
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('*.password');
|
|
123
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('*.secret');
|
|
124
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('*.token');
|
|
125
|
+
});
|
|
126
|
+
it('should have default redact paths for request headers', () => {
|
|
127
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('req.headers.authorization');
|
|
128
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('req.headers.cookie');
|
|
129
|
+
});
|
|
130
|
+
it('should have default redact paths for AWS credentials', () => {
|
|
131
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('credentials.accessKeyId');
|
|
132
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('credentials.secretAccessKey');
|
|
133
|
+
expect(index_1.DEFAULT_REDACT_PATHS).toContain('credentials.sessionToken');
|
|
134
|
+
});
|
|
80
135
|
});
|
|
81
136
|
describe('flexible calling convention', () => {
|
|
82
137
|
it('should support intuitive style: logger.info(message, data)', () => {
|
|
@@ -105,6 +160,22 @@ describe('@arivlabs/logger', () => {
|
|
|
105
160
|
expect(() => logger.error('Error message', { data: 5 })).not.toThrow();
|
|
106
161
|
expect(() => logger.fatal('Fatal message', { data: 6 })).not.toThrow();
|
|
107
162
|
});
|
|
163
|
+
it('should accept Error objects with { err } property', () => {
|
|
164
|
+
const logger = (0, index_1.createLogger)({ service: 'api-gateway' });
|
|
165
|
+
const testError = new Error('Test error');
|
|
166
|
+
expect(() => logger.error('Operation failed', { err: testError })).not.toThrow();
|
|
167
|
+
});
|
|
168
|
+
it('should accept Error objects with { error } property (auto-converts to err)', () => {
|
|
169
|
+
const logger = (0, index_1.createLogger)({ service: 'api-gateway' });
|
|
170
|
+
const testError = new Error('Test error');
|
|
171
|
+
expect(() => logger.error('Operation failed', { error: testError })).not.toThrow();
|
|
172
|
+
});
|
|
173
|
+
it('should handle both err and error properties together', () => {
|
|
174
|
+
const logger = (0, index_1.createLogger)({ service: 'api-gateway' });
|
|
175
|
+
const testError = new Error('Test error');
|
|
176
|
+
// When both are provided, err takes precedence (error is not converted)
|
|
177
|
+
expect(() => logger.error('Operation failed', { err: testError, error: 'string' })).not.toThrow();
|
|
178
|
+
});
|
|
108
179
|
});
|
|
109
180
|
describe('logger.domain()', () => {
|
|
110
181
|
it('should create a child logger with domain', () => {
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|