deno.land / x / abc@v1.3.3 / middleware / logger.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
57
58
import type { MiddlewareFunc } from "../types.ts";import type { Context } from "../context.ts";import type { Skipper } from "./skipper.ts";
import { DefaultSkipper } from "./skipper.ts";const { writeSync, stdout } = Deno;
export type Formatter = (c: Context) => string;
const encoder = new TextEncoder();
export const DefaultFormatter: Formatter = (c) => { const req = c.request;
const time = new Date().toISOString(); const method = req.method; const url = req.url || "/"; const protocol = c.request.proto;
return `${time} ${method} ${url} ${protocol}\n`;};
export const DefaultLoggerConfig: LoggerConfig = { skipper: DefaultSkipper, formatter: DefaultFormatter, output: stdout,};
export function logger( config: LoggerConfig = DefaultLoggerConfig,): MiddlewareFunc { if (config.formatter == null) { config.formatter = DefaultLoggerConfig.formatter; } if (config.skipper == null) { config.skipper = DefaultLoggerConfig.skipper; } if (config.output == null) { config.output = stdout; } return (next) => (c) => { if (config.skipper!(c)) { return next(c); } writeSync(config.output!.rid, encoder.encode(config.formatter!(c))); return next(c); };}
export interface LoggerConfig { skipper?: Skipper; formatter?: Formatter;
// Default is Deno.stdout. output?: { rid: number };}
abc

Version Info

Tagged at
2 years ago