strogger
Version:
📊 A modern structured logging library with functional programming, duck-typing, and comprehensive third-party integrations
56 lines • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loggerWithSimpleFormatter = exports.timedFunction = exports.performanceMonitor = exports.loggerWithCustomTransport = exports.strogger = void 0;
// Functional Logger Usage Example: Demonstrates dependency injection, custom transport, performance monitor, and formatter duck-typing.
const index_1 = require("../index");
// Basic functional logger with dependency injection
const env = (0, index_1.getEnvironment)();
const formatter = (0, index_1.createJsonFormatter)();
const transport = (0, index_1.createConsoleTransport)({ formatter, level: index_1.LogLevel.DEBUG });
const strogger = (0, index_1.createLogger)({
config: { serviceName: "my-service", stage: "dev" },
transports: [transport],
formatter,
env,
});
exports.strogger = strogger;
// Custom transport using duck-typing
const customTransport = {
log: (entry) => {
console.log(`[CUSTOM] ${JSON.stringify(entry)}`);
},
setLevel: (level) => {
console.log(`Setting custom transport level to ${level}`);
},
getLevel: () => index_1.LogLevel.INFO,
};
const loggerWithCustomTransport = (0, index_1.createLogger)({
config: { serviceName: "service-with-custom-transport" },
transports: [customTransport],
formatter,
env,
});
exports.loggerWithCustomTransport = loggerWithCustomTransport;
// Performance monitoring example
const performanceMonitor = (0, index_1.createPerformanceMonitor)();
exports.performanceMonitor = performanceMonitor;
const timedFunction = async () => {
const timer = performanceMonitor.startTimer("myFunction");
await new Promise((resolve) => setTimeout(resolve, 100));
const metrics = timer({ userId: "123", operation: "data-processing" });
console.log("Function completed:", metrics);
return "result";
};
exports.timedFunction = timedFunction;
// Formatter duck-typing example
const simpleFormatter = {
format: (entry) => `${entry.timestamp} [${entry.level}] ${entry.message}`,
};
const loggerWithSimpleFormatter = (0, index_1.createLogger)({
config: { serviceName: "simple-formatter-service" },
transports: [(0, index_1.createConsoleTransport)({ formatter: simpleFormatter })],
formatter: simpleFormatter,
env,
});
exports.loggerWithSimpleFormatter = loggerWithSimpleFormatter;
//# sourceMappingURL=functional-usage.js.map