-
Notifications
You must be signed in to change notification settings - Fork 0
/
log.ts
45 lines (39 loc) · 1.11 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
import {Logger, ConsoleHandler, FileHandler, format} from "../../deps.deno_ext.ts";
function logRecord(date:Date, level:string, message:string){
return `${format(date, "yyyy-MM-ddTHH:mm:ss")} [${level}] ${message}`;
}
/**
* Start logging.
* Output to console for general and also write to file if `path` is defined.
* @see https://deno.land/std/log
* @example
* ```ts
* const log = logEntry();
* ```
*/
export function logEntry(name?:string, path?:string):Logger{
const level = "INFO";
const log = new Logger(name ?? "log", level, {
handlers: [
new ConsoleHandler(level, {
formatter({datetime, levelName, msg}){
return logRecord(datetime, levelName, msg);
}
})
]
});
if(path){
log.handlers.push(
new FileHandler(level, {
filename: path,
formatter({datetime, levelName, msg}){
return logRecord(datetime, levelName, msg);
}
})
);
}
for(const h of log.handlers){
h.setup();
}
return log;
}