-
Notifications
You must be signed in to change notification settings - Fork 0
/
log.ts
56 lines (54 loc) · 1.41 KB
/
log.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import {
getLogger,
handlers,
setup,
} from "https://deno.land/std@0.146.0/log/mod.ts";
export const setupLogs = async (appLogFile: string) => {
await setup({
handlers: {
console: new handlers.ConsoleHandler("DEBUG"),
file: new handlers.FileHandler("DEBUG", {
filename: appLogFile,
formatter: `${new Date().toISOString()} {levelName} {msg}`,
}),
errors: new handlers.FileHandler("ERROR", {
filename: appLogFile,
formatter: `${new Date().toISOString()} {levelName} {msg}`,
}),
},
loggers: {
default: {
level: "WARNING",
handlers: ["console", "errors"],
},
debug: {
level: "DEBUG",
handlers: ["console", "file"],
},
fileError: {
level: "ERROR",
handlers: ["errors"],
},
},
});
};
export const error = (appLogFile: string, debug?: boolean) =>
(
message: string,
error?: Error,
) => {
const defaultLogger = getLogger();
const debugLogger = getLogger("debug");
const fileErrorLogger = getLogger("fileError");
defaultLogger.error(`${message} Please file an issue.`);
if (error) {
if (debug) {
debugLogger.error("There was an attached error.");
debugLogger.error(error);
} else {
fileErrorLogger.error(error);
}
defaultLogger.error(`Details logged to ${appLogFile}.`);
}
Deno.exit(1);
};