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