@quartz-labs/logger 1.1.2 → 1.3.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/README.md +6 -6
- package/dist/config.d.ts +6 -5
- package/dist/config.js +16 -6
- package/dist/config.js.map +1 -1
- package/dist/logger.js +53 -47
- package/dist/logger.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<img width="2500" alt="
|
|
2
|
+
<img width="2500" alt="Pyra" src="https://pyra.fi/open-graph.jpg" />
|
|
3
3
|
|
|
4
|
-
<h1 style="margin-top:20px;">
|
|
4
|
+
<h1 style="margin-top:20px;">Pyra Logger</h1>
|
|
5
5
|
</div>
|
|
6
6
|
|
|
7
|
-
This repository is
|
|
7
|
+
This repository is Pyra's open-source logger package. You can install using:
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
yarn add @quartz-labs/logger
|
|
@@ -12,8 +12,8 @@ yarn add @quartz-labs/logger
|
|
|
12
12
|
|
|
13
13
|
## Links
|
|
14
14
|
|
|
15
|
-
Website and waitlist: [
|
|
15
|
+
Website and waitlist: [pyra.fi](https://pyra.fi/)
|
|
16
16
|
|
|
17
|
-
X: [@
|
|
17
|
+
X: [@GetPyra](https://x.com/GetPyra)
|
|
18
18
|
|
|
19
|
-
Contact: [diego@
|
|
19
|
+
Contact: [diego@oyra.fi](mailto:diego@pyra.fi)
|
package/dist/config.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
declare const config: {
|
|
2
2
|
EMAIL_TO: string[];
|
|
3
|
-
EMAIL_FROM
|
|
4
|
-
EMAIL_HOST
|
|
5
|
-
EMAIL_PORT
|
|
6
|
-
EMAIL_USER
|
|
7
|
-
EMAIL_PASSWORD
|
|
3
|
+
EMAIL_FROM?: string | undefined;
|
|
4
|
+
EMAIL_HOST?: string | undefined;
|
|
5
|
+
EMAIL_PORT?: number | undefined;
|
|
6
|
+
EMAIL_USER?: string | undefined;
|
|
7
|
+
EMAIL_PASSWORD?: string | undefined;
|
|
8
8
|
};
|
|
9
|
+
export declare const isEmailConfigured: boolean;
|
|
9
10
|
export default config;
|
package/dist/config.js
CHANGED
|
@@ -2,10 +2,14 @@ import dotenv from 'dotenv';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
dotenv.config();
|
|
4
4
|
const envSchema = z.object({
|
|
5
|
-
EMAIL_TO: z.string()
|
|
5
|
+
EMAIL_TO: z.string().optional().default("")
|
|
6
6
|
.transform((str) => {
|
|
7
7
|
try {
|
|
8
|
+
if (!str)
|
|
9
|
+
return [];
|
|
8
10
|
const emails = str.split(',').map(email => email.trim());
|
|
11
|
+
if (emails.length === 0)
|
|
12
|
+
return [];
|
|
9
13
|
if (!emails.every(email => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)))
|
|
10
14
|
throw new Error();
|
|
11
15
|
return emails;
|
|
@@ -14,11 +18,11 @@ const envSchema = z.object({
|
|
|
14
18
|
throw new Error("Invalid email list format: must be comma-separated email addresses");
|
|
15
19
|
}
|
|
16
20
|
}),
|
|
17
|
-
EMAIL_FROM: z.string().email(),
|
|
18
|
-
EMAIL_HOST: z.string(),
|
|
19
|
-
EMAIL_PORT: z.coerce.number().min(0),
|
|
20
|
-
EMAIL_USER: z.string().email(),
|
|
21
|
-
EMAIL_PASSWORD: z.string(),
|
|
21
|
+
EMAIL_FROM: z.string().email().optional(),
|
|
22
|
+
EMAIL_HOST: z.string().optional(),
|
|
23
|
+
EMAIL_PORT: z.coerce.number().min(0).optional(),
|
|
24
|
+
EMAIL_USER: z.string().email().optional(),
|
|
25
|
+
EMAIL_PASSWORD: z.string().optional(),
|
|
22
26
|
});
|
|
23
27
|
const config = envSchema.parse({
|
|
24
28
|
EMAIL_TO: process.env.EMAIL_TO,
|
|
@@ -28,5 +32,11 @@ const config = envSchema.parse({
|
|
|
28
32
|
EMAIL_USER: process.env.EMAIL_USER,
|
|
29
33
|
EMAIL_PASSWORD: process.env.EMAIL_PASSWORD,
|
|
30
34
|
});
|
|
35
|
+
export const isEmailConfigured = Boolean(config.EMAIL_TO.length > 0 &&
|
|
36
|
+
config.EMAIL_FROM &&
|
|
37
|
+
config.EMAIL_HOST &&
|
|
38
|
+
config.EMAIL_PORT !== undefined &&
|
|
39
|
+
config.EMAIL_USER &&
|
|
40
|
+
config.EMAIL_PASSWORD);
|
|
31
41
|
export default config;
|
|
32
42
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;SACtC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,IAAI,CAAC;YACD,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAEnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;YACxF,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACzC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;IAC9B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;IAClC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;IAClC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;IAClC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;IAClC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;IAC1B,MAAM,CAAC,UAAU;IACjB,MAAM,CAAC,UAAU;IACjB,MAAM,CAAC,UAAU,KAAK,SAAS;IAC/B,MAAM,CAAC,UAAU;IACjB,MAAM,CAAC,cAAc,CACxB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/logger.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Writable } from "node:stream";
|
|
2
2
|
import winston, { createLogger, transports } from "winston";
|
|
3
3
|
import nodemailer from "nodemailer";
|
|
4
|
-
import config from "./config.js";
|
|
4
|
+
import config, { isEmailConfigured } from "./config.js";
|
|
5
5
|
export class AppLogger {
|
|
6
6
|
name;
|
|
7
7
|
logger;
|
|
@@ -24,67 +24,71 @@ export class AppLogger {
|
|
|
24
24
|
setInterval(() => {
|
|
25
25
|
this.dailyErrorCache.clear();
|
|
26
26
|
}, 1000 * 60 * 60 * 24);
|
|
27
|
-
const mailTransporter = nodemailer.createTransport({
|
|
28
|
-
host: config.EMAIL_HOST,
|
|
29
|
-
port: config.EMAIL_PORT,
|
|
30
|
-
secure: false,
|
|
31
|
-
auth: {
|
|
32
|
-
user: config.EMAIL_USER,
|
|
33
|
-
pass: config.EMAIL_PASSWORD,
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
27
|
const consoleFormat = winston.format.combine(winston.format.colorize(), winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.printf(({ level, message, timestamp }) => {
|
|
37
28
|
return `[${timestamp}] ${level}: ${message}`;
|
|
38
29
|
}));
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
30
|
+
const errorTransports = [];
|
|
31
|
+
if (isEmailConfigured) {
|
|
32
|
+
const mailTransporter = nodemailer.createTransport({
|
|
33
|
+
host: config.EMAIL_HOST,
|
|
34
|
+
port: config.EMAIL_PORT,
|
|
35
|
+
secure: false,
|
|
36
|
+
auth: {
|
|
37
|
+
user: config.EMAIL_USER,
|
|
38
|
+
pass: config.EMAIL_PASSWORD,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
const mailFormat = winston.format.combine(winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.json({ space: 2 }));
|
|
42
|
+
const dailyErrorCacheTimeMinutes = Math.round(this.dailyErrorCacheTimeMs / 1000 / 60);
|
|
43
|
+
const mailTransportInstance = new winston.transports.Stream({
|
|
44
|
+
stream: new Writable({
|
|
45
|
+
write: (message, _, callback) => {
|
|
46
|
+
const parsedMessage = JSON.parse(message);
|
|
47
|
+
const cacheKey = `${parsedMessage.level}: ${parsedMessage.message}`;
|
|
48
|
+
const now = Date.now();
|
|
49
|
+
const cacheEntry = this.dailyErrorCache.get(cacheKey) || { count: 0, lastSent: 0 };
|
|
50
|
+
cacheEntry.count++;
|
|
51
|
+
// Only send email if error has not been sent in the last errorEmailCacheTime seconds
|
|
52
|
+
if (now - cacheEntry.lastSent > this.dailyErrorCacheTimeMs) {
|
|
53
|
+
const emailSubject = this.dailyErrorCacheTimeMs > 0
|
|
54
|
+
? `${this.name} Error (${cacheEntry.count} occurrences in past ${dailyErrorCacheTimeMinutes} minutes)`
|
|
55
|
+
: `${this.name} Error`;
|
|
56
|
+
for (const admin of config.EMAIL_TO) {
|
|
57
|
+
mailTransporter.sendMail({
|
|
58
|
+
from: config.EMAIL_FROM,
|
|
59
|
+
to: admin,
|
|
60
|
+
subject: emailSubject,
|
|
61
|
+
text: message,
|
|
62
|
+
}).catch((error) => {
|
|
63
|
+
console.error("Failed to send error email: ", error);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
cacheEntry.count = 0;
|
|
67
|
+
cacheEntry.lastSent = now;
|
|
63
68
|
}
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
this.dailyErrorCache.set(cacheKey, cacheEntry);
|
|
70
|
+
callback();
|
|
71
|
+
return true;
|
|
66
72
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
format: mailFormat,
|
|
74
|
-
});
|
|
73
|
+
}),
|
|
74
|
+
level: 'error',
|
|
75
|
+
format: mailFormat,
|
|
76
|
+
});
|
|
77
|
+
errorTransports.push(mailTransportInstance);
|
|
78
|
+
}
|
|
75
79
|
this.logger = createLogger({
|
|
76
80
|
level: 'info',
|
|
77
81
|
transports: [
|
|
78
82
|
new transports.Console({ format: consoleFormat }),
|
|
79
|
-
|
|
83
|
+
...errorTransports
|
|
80
84
|
],
|
|
81
85
|
exceptionHandlers: [
|
|
82
86
|
new transports.Console({ format: consoleFormat }),
|
|
83
|
-
|
|
87
|
+
...errorTransports
|
|
84
88
|
],
|
|
85
89
|
rejectionHandlers: [
|
|
86
90
|
new transports.Console({ format: consoleFormat }),
|
|
87
|
-
|
|
91
|
+
...errorTransports
|
|
88
92
|
],
|
|
89
93
|
});
|
|
90
94
|
process.on("uncaughtException", (error) => {
|
|
@@ -95,6 +99,8 @@ export class AppLogger {
|
|
|
95
99
|
});
|
|
96
100
|
}
|
|
97
101
|
async sendEmail(subject, message) {
|
|
102
|
+
if (!isEmailConfigured)
|
|
103
|
+
return;
|
|
98
104
|
try {
|
|
99
105
|
const mailTransporter = nodemailer.createTransport({
|
|
100
106
|
host: config.EMAIL_HOST,
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,OAAO,EAAE,EAAE,YAAY,EAAe,UAAU,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quartz-labs/logger",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Logger class for outputting logs and emailing any errors to admins",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"scripts": {
|
|
26
26
|
"lint": "yarn biome lint --write",
|
|
27
27
|
"build": "yarn install && yarn lint && tsc -p tsconfig.json",
|
|
28
|
-
"deploy": "yarn build && yarn publish
|
|
28
|
+
"deploy": "yarn build && npm login && yarn publish"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/dotenv": "^8.2.3",
|