authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-03-05 22:45:21-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-03-05 23:00:41-08:00
log6ee057e25bd4f4dad85445571ffb0cc1ce3c6980
tree02ac261406476daba05d0c6648e85d123a96118c
parent551aebc6046f23eabcf0ea6dddab73619b83b2da

rm test


1 files changed, 0 insertions(+), 66 deletions(-)

apps/server/scripts/logger-scope-repro.ts deleted-66
...@@ -1,66 +0,0 @@
1import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
2import * as NodeServices from "@effect/platform-node/NodeServices";
3import path from "node:path";
4
5import { Effect, FileSystem, Layer, Logger, ServiceMap } from "effect";
6
7import { makeEventNdjsonLogger } from "../src/provider/Layers/EventNdjsonLogger.ts";
8
9class LogDir extends ServiceMap.Service<LogDir, string>()("t3/scripts/logger-scope-repro/LogDir") {}
10
11const main = Effect.gen(function* () {
12 const logdir = yield* LogDir;
13 const providerLogPath = path.join(logdir, "provider");
14
15 yield* Effect.logInfo(`providerLogPath=${providerLogPath}`);
16
17 const providerLogger = yield* makeEventNdjsonLogger(providerLogPath, {
18 stream: "native",
19 batchWindowMs: 10,
20 });
21
22 yield* Effect.logInfo("before provider write");
23
24 if (providerLogger) {
25 yield* providerLogger.write(
26 {
27 kind: "probe",
28 message: "provider-only event",
29 },
30 "thread-123" as never,
31 );
32 }
33
34 yield* Effect.logInfo("after provider write");
35 yield* Effect.sleep("50 millis");
36
37 if (providerLogger) {
38 yield* providerLogger.close();
39 }
40 yield* Effect.logInfo("after provider close");
41
42 const fs = yield* FileSystem.FileSystem;
43 const logContents = yield* fs
44 .readDirectory(logdir, { recursive: true })
45 .pipe(
46 Effect.flatMap((entries) =>
47 Effect.all(entries.map((entry) => fs.readFileString(path.join(logdir, entry)))),
48 ),
49 );
50 yield* Effect.logInfo(`logContents=${logContents}`);
51});
52
53Effect.gen(function* () {
54 const fs = yield* FileSystem.FileSystem;
55 const logdir = path.join(process.cwd(), "logtest");
56 yield* fs.makeDirectory(logdir);
57
58 const fileLogger = yield* Logger.formatSimple.pipe(
59 Logger.toFile(path.join(logdir, "global.log")),
60 );
61 const dualLogger = Logger.layer([fileLogger, Logger.consolePretty()]);
62
63 const mainLayer = Layer.mergeAll(dualLogger, Layer.succeed(LogDir, logdir));
64
65 yield* main.pipe(Effect.provide(mainLayer));
66}).pipe(Effect.scoped, Effect.provide(NodeServices.layer), NodeRuntime.runMain);