/* * clippr: a social bookmarking service for the AT Protocol * Copyright (c) 2025 clippr contributors. * SPDX-License-Identifier: AGPL-3.0-only */ import { createLogger, format, transports } from "winston"; import { Config } from "./config.js"; const config = Config.getInstance().getConfig(); const logLevel = config.logLevel; const Logger = createLogger({ level: logLevel, transports: [ new transports.Console({ format: format.combine( format.colorize(), format.timestamp(), format.printf(({ level, message, timestamp }) => { return `[${timestamp}] ${level}: ${message}`; }), ), }), new transports.File({ dirname: "logs", filename: "clippr-error.log", level: "error", }), new transports.File({ dirname: "logs", filename: "clippr-combined.log", }), ], format: format.combine(format.timestamp(), format.json()), defaultMeta: { service: "clippr-backend" }, }); export default Logger;