Appearance
electron-log
一个简单的 Electron 应用程序日志记录工具
安装
bash
pnpm add electron-log基础配置
在主进程或渲染进程中配置:
ts
import log from 'electron-log'
// 设置日志级别
log.transports.file.level = 'info'
log.transports.console.level = 'debug'
// 设置日志文件路径
log.transports.file.resolvePathFn = () => path.join(__dirname, 'logs/main.log')
// 设置日志格式
log.transports.file.format = '[{y}-{m}-{d} {h}:{i}:{s}] [{level}] {text}'使用示例
基本使用
ts
import log from 'electron-log'
// 不同级别的日志
log.error('错误信息')
log.warn('警告信息')
log.info('普通信息')
log.verbose('详细信息')
log.debug('调试信息')
log.silly('追踪信息')
// 带有额外信息的日志
log.info('用户登录', { userId: 123, time: new Date() })
// 捕获未处理的异常
process.on('uncaughtException', (error) => {
log.error('未捕获的异常:', error)
})在渲染进程中使用
ts
import log from 'electron-log/renderer'
log.info('来自渲染进程的日志')高级配置
ts
import log from 'electron-log'
import path from 'path'
// 自定义日志传输
log.transports.file.maxSize = 1024 * 1024 // 1MB
log.transports.file.archiveLog = (file) => {
const date = new Date()
const name = path.basename(file.path)
return path.join(path.dirname(file.path), `${date.getTime()}-${name}`)
}
// 自定义控制台输出样式
log.transports.console.format = (message) => {
const date = new Date(message.date).toISOString()
return `${date} ${message.level} ${message.text}`
}
// 添加自定义传输
log.transports.customFile = {
level: 'info',
format: '[{h}:{i}:{s}] [{level}] {text}',
async writeLine(message) {
// 自定义写入逻辑
await fs.appendFile('custom.log', message + '\n')
},
}
// 日志轮转配置
log.transports.file.maxSize = 10 * 1024 * 1024 // 10MB
log.transports.file.format = '{y}-{m}-{d} {h}:{i}:{s} [{level}] {text}'
log.transports.file.getFile = () => ({
path: path.join(__dirname, 'logs', 'app.log'),
clear: false,
})
// 自定义日志级别颜色
log.transports.console.format = (message) => {
const colors = {
error: '\x1b[31m', // 红色
warn: '\x1b[33m', // 黄色
info: '\x1b[32m', // 绿色
verbose: '\x1b[34m', // 蓝色
debug: '\x1b[36m', // 青色
silly: '\x1b[35m', // 紫色
}
const reset = '\x1b[0m'
const color = colors[message.level] || ''
return `${color}[${message.level}] ${message.text}${reset}`
}