@aspectlylabs/mikka 0.0.0-stage → 0.0.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/log.js ADDED
@@ -0,0 +1,62 @@
1
+ // src/log.ts
2
+ import pino from "pino";
3
+ import { createStream } from "rotating-file-stream";
4
+ function createLogger(options = {}) {
5
+ const streams = [];
6
+ let file;
7
+ if (options.dir) {
8
+ file = createStream("daemon.log", {
9
+ path: options.dir,
10
+ size: "5M",
11
+ maxFiles: 3,
12
+ mode: 384
13
+ });
14
+ streams.push({ stream: file });
15
+ }
16
+ if (options.stdout) streams.push({ stream: process.stdout });
17
+ const level = options.level ?? process.env.MIKKA_LOG_LEVEL ?? "info";
18
+ const redact = {
19
+ paths: [
20
+ "accessToken",
21
+ "access_token",
22
+ "refresh_token",
23
+ "refreshToken",
24
+ "id_token",
25
+ "idToken",
26
+ "authorization",
27
+ "Authorization",
28
+ "cookie",
29
+ "Cookie",
30
+ "password",
31
+ "secret",
32
+ "credential",
33
+ "*.accessToken",
34
+ "*.access_token",
35
+ "*.refresh_token",
36
+ "*.refreshToken",
37
+ "*.authorization",
38
+ "*.Authorization",
39
+ "*.cookie",
40
+ "*.Cookie"
41
+ ],
42
+ censor: "[REDACTED]"
43
+ };
44
+ if (streams.length === 0) return pino({ level, enabled: false, redact });
45
+ const logger = pino(
46
+ { level, base: { pid: process.pid, run_id: null }, redact },
47
+ pino.multistream(streams)
48
+ );
49
+ if (file) files.set(logger, file);
50
+ return logger;
51
+ }
52
+ var files = /* @__PURE__ */ new WeakMap();
53
+ function closeLogger(logger) {
54
+ const file = files.get(logger);
55
+ if (!file) return Promise.resolve();
56
+ files.delete(logger);
57
+ return new Promise((resolve) => file.end(resolve));
58
+ }
59
+ export {
60
+ closeLogger,
61
+ createLogger
62
+ };