lossless-cut/src/main/logger.ts

38 wiersze
1.2 KiB
TypeScript
Czysty Zwykły widok Historia

2024-03-21 15:28:25 +00:00
import winston from 'winston';
import util from 'util';
2024-02-20 14:48:40 +00:00
// eslint-disable-next-line import/no-extraneous-dependencies
2024-03-21 15:28:25 +00:00
import { app } from 'electron';
import { join } from 'path';
// eslint-disable-next-line import/no-extraneous-dependencies
import type { TransformableInfo } from 'logform';
2022-09-04 14:44:48 +00:00
// https://mifi.no/blog/winston-electron-logger/
// https://github.com/winstonjs/winston/issues/1427
const combineMessageAndSplat = () => ({
2024-03-21 15:28:25 +00:00
transform(info: TransformableInfo) {
// @ts-expect-error todo
2022-09-04 14:44:48 +00:00
const { [Symbol.for('splat')]: args = [], message } = info;
// eslint-disable-next-line no-param-reassign
info.message = util.format(message, ...args);
return info;
},
});
const createLogger = () => winston.createLogger({
format: winston.format.combine(
winston.format.timestamp(),
combineMessageAndSplat(),
2024-03-21 15:28:25 +00:00
winston.format.printf((info) => `${info['timestamp']} ${info.level}: ${info.message}`),
2022-09-04 14:44:48 +00:00
),
});
2024-03-21 15:28:25 +00:00
const logDirPath = app.isPackaged ? app.getPath('userData') : '.';
2022-09-04 14:44:48 +00:00
const logger = createLogger();
logger.add(new winston.transports.File({ level: 'debug', filename: join(logDirPath, 'app.log'), options: { flags: 'a' } }));
2024-03-21 15:28:25 +00:00
if (!app.isPackaged) logger.add(new winston.transports.Console());
2022-09-04 14:44:48 +00:00
2024-03-21 15:28:25 +00:00
export default logger;