Loading...
Loading...
Compare original and translation side by side
pnpm add @workleap/loggingpnpm add @workleap/loggingdebuginformationwarningerrorcriticaldebuginformationwarningerrorcriticalRootLoggerLoggeruseLogger()RootLogger// Squide example:
import { useLogger } from "@squide/firefly";
import type { RootLogger } from "@workleap/logging";
const logger = useLogger();
(logger as RootLogger).startScope("User signup");RootLoggerLoggeruseLogger()RootLogger// Squide示例:
import { useLogger } from "@squide/firefly";
import type { RootLogger } from "@workleap/logging";
const logger = useLogger();
(logger as RootLogger).startScope("User signup");import { BrowserConsoleLogger, LogLevel } from "@workleap/logging";
// Basic usage
const logger = new BrowserConsoleLogger();
// With minimum log level
const logger = new BrowserConsoleLogger({ logLevel: LogLevel.information });import { BrowserConsoleLogger, LogLevel } from "@workleap/logging";
// 基础用法
const logger = new BrowserConsoleLogger();
// 配置最低日志级别
const logger = new BrowserConsoleLogger({ logLevel: LogLevel.information });import { BrowserConsoleLogger, CompositeLogger } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // or from "@workleap/logrocket"
const logger = new CompositeLogger([
new BrowserConsoleLogger(),
new LogRocketLogger()
]);import { BrowserConsoleLogger, CompositeLogger } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // 或来自 "@workleap/logrocket"
const logger = new CompositeLogger([
new BrowserConsoleLogger(),
new LogRocketLogger()
]);logger.debug("message");
logger.information("message");
logger.warning("message"); // or logger.warn("message")
logger.error("message");
logger.critical("message");logger
.withText("Processing order")
.withObject({ orderId: 123 })
.withError(new Error("Failed"))
.error();logger.withText("Success", {
style: { color: "green", fontWeight: "bold" }
}).information();logger
.withText("Line 1")
.withLineChange()
.withText("Line 2")
.debug();logger.debug("message");
logger.information("message");
logger.warning("message"); // 或 logger.warn("message")
logger.error("message");
logger.critical("message");logger
.withText("Processing order")
.withObject({ orderId: 123 })
.withError(new Error("Failed"))
.error();logger.withText("Success", {
style: { color: "green", fontWeight: "bold" }
}).information();logger
.withText("Line 1")
.withLineChange()
.withText("Line 2")
.debug();const scope = logger.startScope("User signup");
scope.information("Form loaded");
scope.debug("Validating...");
scope.withText("Failed").withError(err).error();
// Output all scope entries
scope.end();
// Or dismiss without output
scope.end({ dismiss: true });// At creation
const scope = logger.startScope("Label", {
labelStyle: { backgroundColor: "purple", color: "white" }
});
// At end (useful for status-based styling)
scope.end({
labelStyle: { backgroundColor: "green", color: "white" }
});const scope = logger.startScope("User signup");
scope.information("Form loaded");
scope.debug("Validating...");
scope.withText("Failed").withError(err).error();
// 输出所有作用域条目
scope.end();
// 或不输出直接关闭
scope.end({ dismiss: true });// 创建时配置
const scope = logger.startScope("Label", {
labelStyle: { backgroundColor: "purple", color: "white" }
});
// 结束时配置(适合基于状态设置样式)
scope.end({
labelStyle: { backgroundColor: "green", color: "white" }
});CompositeLoggerimport { createCompositeLogger, BrowserConsoleLogger } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // or from "@workleap/logrocket"
const logger = createCompositeLogger(false, [new BrowserConsoleLogger(), new LogRocketLogger()]);verboseBrowserConsoleLoggerloggersCompositeLoggerCompositeLoggerimport { createCompositeLogger, BrowserConsoleLogger } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // 或来自 "@workleap/logrocket"
const logger = createCompositeLogger(false, [new BrowserConsoleLogger(), new LogRocketLogger()]);verboseBrowserConsoleLoggerloggersCompositeLoggerLogRocketLogger@workleap/telemetry@workleap/logrocketimport { LogRocketLogger } from "@workleap/telemetry"; // or from "@workleap/logrocket"
const logger = new LogRocketLogger();
logger.debug("Application started!");CompositeLoggerimport { BrowserConsoleLogger, CompositeLogger } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // or from "@workleap/logrocket"
const logger = new CompositeLogger([
new BrowserConsoleLogger(),
new LogRocketLogger()
]);
logger.debug("Application started!"); // Processed by both loggers@workleap/telemetry@workleap/logrocketLogRocketLoggerimport { LogRocketLogger } from "@workleap/telemetry"; // 或来自 "@workleap/logrocket"
const logger = new LogRocketLogger();
logger.debug("Application started!");CompositeLoggerimport { BrowserConsoleLogger, CompositeLogger } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // 或来自 "@workleap/logrocket"
const logger = new CompositeLogger([
new BrowserConsoleLogger(),
new LogRocketLogger()
]);
logger.debug("Application started!"); // 由两个Logger共同处理import { BrowserConsoleLogger, CompositeLogger, LogLevel } from "@workleap/logging";
const isDev = process.env.NODE_ENV === "development";
const logger = new BrowserConsoleLogger({
logLevel: isDev ? LogLevel.debug : LogLevel.information
});import { BrowserConsoleLogger, CompositeLogger, LogLevel } from "@workleap/logging";
const isDev = process.env.NODE_ENV === "development";
const logger = new BrowserConsoleLogger({
logLevel: isDev ? LogLevel.debug : LogLevel.information
});try {
await processOrder(orderId);
} catch (error) {
logger
.withText("Failed to process order")
.withObject({ orderId })
.withError(error as Error)
.error();
}try {
await processOrder(orderId);
} catch (error) {
logger
.withText("Failed to process order")
.withObject({ orderId })
.withError(error as Error)
.error();
}async function registerModule(moduleName: string) {
const scope = logger.startScope(`${moduleName} registration`);
try {
scope.debug("Registering routes...");
await registerRoutes();
scope.debug("Routes registered");
scope.debug("Fetching data...");
await fetchData();
scope.debug("Data loaded");
scope.end({ labelStyle: { color: "green" } });
} catch (error) {
scope.withText("Registration failed").withError(error as Error).error();
scope.end({ labelStyle: { color: "red" } });
throw error;
}
}async function registerModule(moduleName: string) {
const scope = logger.startScope(`${moduleName} registration`);
try {
scope.debug("Registering routes...");
await registerRoutes();
scope.debug("Routes registered");
scope.debug("Fetching data...");
await fetchData();
scope.debug("Data loaded");
scope.end({ labelStyle: { color: "green" } });
} catch (error) {
scope.withText("Registration failed").withError(error as Error).error();
scope.end({ labelStyle: { color: "red" } });
throw error;
}
}import { BrowserConsoleLogger, CompositeLogger, LogLevel } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // or from "@workleap/logrocket"
const logger = new CompositeLogger([
new BrowserConsoleLogger({
logLevel: LogLevel.error
}),
new LogRocketLogger({
logLevel: LogLevel.debug
})
]);import { BrowserConsoleLogger, CompositeLogger, LogLevel } from "@workleap/logging";
import { LogRocketLogger } from "@workleap/telemetry"; // 或来自 "@workleap/logrocket"
const logger = new CompositeLogger([
new BrowserConsoleLogger({
logLevel: LogLevel.error
}),
new LogRocketLogger({
logLevel: LogLevel.debug
})
]);| Environment | Recommended Level |
|---|---|
| Development | |
| Production | |
| 环境 | 推荐级别 |
|---|---|
| 开发环境 | |
| 生产环境 | |
.debug().error()scope.end()errorwarningwithObject()withError()RootLoggeruseLogger()RootLogger(logger as RootLogger).startScope("Label").debug().error()scope.end()errorwarningwithObject()withError()RootLoggeruseLogger()(logger as RootLogger).startScope("Label")