Skip to content

log用来记录应用的业务信息、运行状态、问题排查等。

配置文件

javascript
// ./electron/config/config.default.js(ts)

logger = {
  /** 日志级别:trace < debug < info < warn < error < fatal */
  level: 'info',
  /** 开发环境是否使用美化格式输出 */
  prettyPrint: true,
  /** 日志文件名日期格式 */
  dateFormat: 'yyyy-MM-dd',
  /** 应用日志文件名 */
  appLogName: 'ee.log',
  /** 框架核心日志文件名 */
  coreLogName: 'ee-core.log',
  /** 错误日志文件名 */
  errorLogName: 'ee-error.log',
  /** 日志轮转策略:day(按天),hour(按小时) */
  rotator: 'day',
  /** 需要脱敏的字段路径列表 */
  redact: [],
  /** 脱敏替换值 */
  redactCensor: '[Redacted]',
  /** 是否包含时间戳 */
  timestamp: true,
  /** 日志时间戳的 IANA 时区(文件 JSON 日志);'UTC' 或如 'Asia/Shanghai' */
  timezone: 'UTC',
  /** pino 日志器名称 */
  name: 'ee',
  /** 单个日志文件最大大小 */
  maxSize: '100m',
  /** pino 序列化器 */
  serializers: {},
  /** 自定义日志级别 */
  customLevels: {},
  /** 对象序列化深度限制 */
  depthLimit: 5,
  /** 安全模式:日志写入失败时不抛出异常 */
  safe: true,
}

使用方法

1. Pino 标准合并模式

第一个参数为对象(合并对象),第二个参数为消息字符串:

javascript
logger.info({ userId: 123, action: 'login' }, '用户登录');

2. Pino printf 模式

包含 %s%d 等格式占位符:

javascript
logger.info('用户 %s 登录,耗时 %d ms', '张三', 150);

3. 拼接模式

多个参数自动拼接为字符串:

javascript
logger.info('用户登录:', userId, '耗时:', elapsed);
// 等价于: logger.info('用户登录: 123 耗时: 150')
javascript
logger.trace();
logger.debug();
logger.info();
logger.warn();
logger.error();
logger.fatal();

# 高级语法,占位符
%s:字符串
%d:整数
%i:整数
%f:浮点数
%o:obj对象
%O:obj对象
%c:CSS样式

日志位置

打包前:项目根目录

electron-egg/logs

打包后:软件缓存目录

bash
# windows (例子)
----\.软件名(如:.ee)\logs\xxx.log

# macOS (例子)
Users/用户/.软件名(如:.ee)/logs

# Linux (例子)
$XDG_CONFIG_HOME or ~/.软件名(如:.ee)/logs