|
1 | 1 | import { join } from "@std/path"; |
2 | 2 | import { format as format_ver, parse as parse_ver } from "@std/semver"; |
| 3 | +import type { Config } from "../config.ts"; |
3 | 4 | import { parse_bool, stackTrace } from "../utils.ts"; |
4 | 5 | import { Db, QueryParameterSet, SqliteMaster } from "./db_interface.ts"; |
5 | 6 |
|
@@ -60,10 +61,13 @@ export function format_message( |
60 | 61 |
|
61 | 62 | class BaseLogger { |
62 | 63 | db?: Db; |
| 64 | + #cfg?: Config; |
63 | 65 | #exist_table: Set<string> = new Set(); |
64 | 66 | #use_ffi = false; |
65 | 67 | readonly version = parse_ver("1.0.0-0"); |
66 | | - async init(base_path: string) { |
| 68 | + async init(cfg: Config) { |
| 69 | + this.#cfg = cfg; |
| 70 | + const base_path = cfg.db_path || cfg.base; |
67 | 71 | const db_path = join(base_path, "logs.db"); |
68 | 72 | this.#use_ffi = parse_bool(Deno.env.get("DB_USE_FFI") ?? "false"); |
69 | 73 | if (this.#use_ffi) { |
@@ -133,9 +137,10 @@ class BaseLogger { |
133 | 137 | } |
134 | 138 | add(type: string, level: number, ...messages: unknown[]) { |
135 | 139 | this.#fallback(type, level, ...messages); |
136 | | - if (!this.db) return; |
| 140 | + if (!this.db || !this.#cfg) return; |
137 | 141 | const message = format_message(messages); |
138 | | - const stack = (level >= LogLevel.Trace && level < LogLevel.Debug) || |
| 142 | + const stack = this.#cfg.logging_stack || |
| 143 | + (level >= LogLevel.Trace && level < LogLevel.Debug) || |
139 | 144 | level >= LogLevel.Warn |
140 | 145 | ? stackTrace(2) |
141 | 146 | : undefined; |
@@ -360,6 +365,10 @@ class BaseLogger { |
360 | 365 | log(type: string, ...messages: unknown[]) { |
361 | 366 | this.add(type, LogLevel.Log, ...messages); |
362 | 367 | } |
| 368 | + optimize() { |
| 369 | + if (!this.db) return; |
| 370 | + this.db.query("VACUUM;"); |
| 371 | + } |
363 | 372 | trace(type: string, ...messages: unknown[]) { |
364 | 373 | this.add(type, LogLevel.Trace, ...messages); |
365 | 374 | } |
|
0 commit comments