Zum Inhalt springen

Einen Fehler-Logger ergänzen

Für Entwickler, die einen Client mit OpenBot verbinden oder den Server erweitern. Die Beispiele brauchen die auf dieser Seite genannten Rechte. Beginne mit dem Entwicklerhandbuch.

Für Mitwirkende, die OpenBot ändern oder veröffentlichen.

Wenn du OpenBot aus deinem eigenen Code startest, füge mit Logger.layer einen Logger hinzu. Nutze mergeWithExisting: true, damit die anderen Logger bleiben. Stelle ihn außerhalb des Servers bereit. So bleibt er offen, bis der Server geschlossen ist.

import { NodeRuntime, NodeServices } from "@effect/platform-node"
import { EnvironmentConfiguration, Server } from "@openbot-build/openbot"
import { Effect, Layer, Logger, References } from "effect"
import { FetchHttpClient } from "effect/http"
const alerts = Logger.layer(
[
Logger.make((log) => {
if (log.logLevel !== "Error" && log.logLevel !== "Fatal") return
const annotations = log.fiber.getRef(References.CurrentLogAnnotations)
// Schicke nur die Werte, die du brauchst, zum Beispiel an einen Chat-Bot.
console.log("alert", annotations["source"], annotations["operation"])
}),
],
{ mergeWithExisting: true },
)
NodeRuntime.runMain(
Effect.gen(function* () {
const settings = yield* EnvironmentConfiguration.load
return yield* Layer.launch(
Server.layerLive(settings).pipe(
Layer.provide(Layer.merge(NodeServices.layer, FetchHttpClient.layer)),
),
)
}).pipe(Effect.provide(alerts)),
)

Ein Logger darf nicht blockieren. Wenn du einen langsamen Dienst aufrufen willst, lege jedes Ereignis in eine Warteschlange. Schicke es dann von einer Fiber im Hintergrund. Eine Fiber ist ein leichter Thread, den Effect ausführt.