Skip to content
On this page

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}`
}

要保持清醒 永远不抱有意外的幻想 凭空的期待最要命