This release is 2 versions behind 0.8.1 — the latest version of @logtape/logtape. Jump to latest
Built and signed on GitHub ActionsBuilt and signed on GitHub Actions
Built and signed on GitHub Actions
Simple logging library with zero dependencies for Deno/Node.js/Bun/browsers
This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers




JSR Score
100%
Published
3 months ago (0.7.1)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107import { assertEquals } from "jsr:/@std/assert@^0.222.1/assert-equals"; import { join } from "jsr:/@std/path@^1.0.2/join"; import { getFileSink, getRotatingFileSink } from "./filesink.deno.ts"; import { debug, error, fatal, info, warning } from "./fixtures.ts"; import type { Sink } from "./sink.ts"; Deno.test("getFileSink()", () => { const path = Deno.makeTempFileSync(); const sink: Sink & Disposable = getFileSink(path); sink(debug); sink(info); sink(warning); sink(error); sink(fatal); sink[Symbol.dispose](); assertEquals( Deno.readTextFileSync(path), `\ 2023-11-14 22:13:20.000 +00:00 [DBG] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [INF] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [WRN] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [ERR] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [FTL] my-app·junk: Hello, 123 & 456! `, ); }); Deno.test("getRotatingFileSink()", () => { const path = Deno.makeTempFileSync(); const sink: Sink & Disposable = getRotatingFileSink(path, { maxSize: 150, }); sink(debug); assertEquals( Deno.readTextFileSync(path), "2023-11-14 22:13:20.000 +00:00 [DBG] my-app·junk: Hello, 123 & 456!\n", ); sink(info); assertEquals( Deno.readTextFileSync(path), `\ 2023-11-14 22:13:20.000 +00:00 [DBG] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [INF] my-app·junk: Hello, 123 & 456! `, ); sink(warning); assertEquals( Deno.readTextFileSync(path), "2023-11-14 22:13:20.000 +00:00 [WRN] my-app·junk: Hello, 123 & 456!\n", ); assertEquals( Deno.readTextFileSync(`${path}.1`), `\ 2023-11-14 22:13:20.000 +00:00 [DBG] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [INF] my-app·junk: Hello, 123 & 456! `, ); sink(error); assertEquals( Deno.readTextFileSync(path), `\ 2023-11-14 22:13:20.000 +00:00 [WRN] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [ERR] my-app·junk: Hello, 123 & 456! `, ); assertEquals( Deno.readTextFileSync(`${path}.1`), `\ 2023-11-14 22:13:20.000 +00:00 [DBG] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [INF] my-app·junk: Hello, 123 & 456! `, ); sink(fatal); sink[Symbol.dispose](); assertEquals( Deno.readTextFileSync(path), "2023-11-14 22:13:20.000 +00:00 [FTL] my-app·junk: Hello, 123 & 456!\n", ); assertEquals( Deno.readTextFileSync(`${path}.1`), `\ 2023-11-14 22:13:20.000 +00:00 [WRN] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [ERR] my-app·junk: Hello, 123 & 456! `, ); assertEquals( Deno.readTextFileSync(`${path}.2`), `\ 2023-11-14 22:13:20.000 +00:00 [DBG] my-app·junk: Hello, 123 & 456! 2023-11-14 22:13:20.000 +00:00 [INF] my-app·junk: Hello, 123 & 456! `, ); const dirPath = Deno.makeTempDirSync(); const path2 = join(dirPath, "log"); const sink2: Sink & Disposable = getRotatingFileSink(path2, { maxSize: 150, }); sink2(debug); assertEquals( Deno.readTextFileSync(path2), "2023-11-14 22:13:20.000 +00:00 [DBG] my-app·junk: Hello, 123 & 456!\n", ); sink2[Symbol.dispose](); }); // cSpell: ignore filesink