Electron-log的使用

前言

因为在做一款Electron应用,需要记录任务执行日志并保存到本地,用conslog也能实现,但是需要自己手写写入本地文件,不想写,就想起了electron-log这款日志工具。

Electron-log NPM地址:

electron-log​www.npmjs.com/package/electron-log​编辑

Electron-log Github地址:

https://github.com/megahertz/electron-log​github.com/megahertz/electron-log

以下文档主要来自英文原版的翻译,也包含自己的一些理解,如有需要,直接移步上面地址自行阅读英文原版介绍!

Electron-log是干什么的?

它只是Electron和NW.js应用中的一个简单的日志模块。没有任何依赖,没有复杂的配置,只需要require就可以使用。而且它不仅可以用于Electron应用中也可以用在任何node.js的应用中。

默认日志会被记录在如下位置:

on Linux: ~/.config/{app name}/logs/{process type}.log

on macOS: ~/Library/Logs/{app name}/{process type}.log

on Windows: %USERPROFILE%\AppData\Roaming\{app name}\logs\{process type}.log

安装

npm install electron-log

使用

const log = require('electron-log');

log.info('Hello, log');
log.warn('Some problem appears');

electron-log v2.x,v3.x升级到v4.x

如果你当前使用的是v2.x或者v3.x,想升级到v4.x请仔细阅读迁移指南(

https://github.com/megahertz/electron-log/blob/HEAD/docs/migration.md​github.com/megahertz/electron-log/blob/HEAD/docs/migration.md

)和更新日志。

日志等级

electron-log包含如下日志等级:

error, warn, info, verbose, debug, silly

疑问:前五个都是常用的,但是silly没有见过,如果有人知道,欢迎在文章下方留言,分享一二!

nodeintegration

如果在渲染编译过程中遇到require is not defined错误,请阅读nodeintegration

https://github.com/megahertz/electron-log/blob/HEAD/docs/node-integration.md​github.com/megahertz/electron-log/blob/HEAD/docs/node-integration.md

Transport

Transport(运输)是一个处理日志消息的简单函数。默认它会输出在控制台和文件。

如果你改变了Transport的一些选项,请确保主进程和渲染进程都被应用了。

你可以通过如下函数设置Transport选项:

log.transports.console.format = '{h}:{i}:{s} {text}';
log.transports.file.getFile();

Console transport

在应用主进程控制台或者渲染进程(DevTools)打印日志。

选项

  • format,默认 '%c{h}:{i}:{s}.{ms}%c › {text}' (main), '{h}:{i}:{s}.{ms} › {text}' (renderer)
  • level,默认 silly
  • useStyles,在主进程中使用样式,即使没有附加TTY,默认为null(疑问:这个没有看懂,如果有人知道,欢迎在文章下方留言,分享一二)

File transport

file transport将日志写入到文件。

选项

  • format,默认 '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}] {text}'
  • level,默认 silly
  • resolvePath 函数设置日志路径,例如:
log.transports.file.resolvePath = () => path.join(APP_DATA, 'logs/main.log');

更多File transport信息,请查阅:

https://github.com/megahertz/electron-log/blob/HEAD/docs/file.md​github.com/megahertz/electron-log/blob/HEAD/docs/file.md

IPC transport

当在渲染进程内部进行日志记录时,它还会显示应用程序控制台中的日志,反之亦然。这种传输可能会影响性能,因此在打包应用程序中默认禁用它。

如果你不在主进程中使用电子日志,但想在控制台中显示渲染器日志,在主代码的某处添加require(' electronic -log')。

选项

  • level,默认 silly

Remote transport

把logmessage放进body中,然后给一个目的url发送post方式的json请求。

选项

  • level 默认 false
  • url 远程url(目标url)

更多Remote transport信息,请查阅:

https://github.com/megahertz/electron-log/blob/HEAD/docs/remote.md​github.com/megahertz/electron-log/blob/HEAD/docs/remote.md

Disable a transport

只设置属性为false就可以禁用,例如:

log.transports.file.level = false;
log.transports.console.level = false;

覆盖或者自定义transport

transport只是一个匿名函数,覆盖或者添加自定义transport,请查阅:

https://github.com/megahertz/electron-log/blob/HEAD/docs/extend.md#transport​github.com/megahertz/electron-log/blob/HEAD/docs/extend.md#transport

覆盖consloe.log

有时electron-log替代consloe.log是很有用的,如下:

console.log = log.log;

如果你想覆盖其他方法,像error,warn可以这样写:

Object.assign(console, log.functions);

颜色

颜色配置可以应用在主进程和渲染进程的DevTools的控制台中。

http://log.info('%cRed text. %cGreen text', 'color: red', 'color: green')

可用的颜色:

  • unset(重置到默认颜色)
  • black(黑色)
  • red(红色)
  • green(绿色)
  • yellow(黄色)
  • blue(蓝色)
  • magenta(品红色)
  • cyan(青色)
  • white(白色)

在DevTools控制台你可以使用css属性。

捕获错误

electron-log可以捕获记录未定义错误/拒绝:

log.catchErrors(options?);

更多信息:

https://github.com/megahertz/electron-log/blob/HEAD/docs/catch.md​github.com/megahertz/electron-log/blob/HEAD/docs/catch.md

钩子

在某些情况下,您可能希望更多地控制日志记录。钩子是在每次传输调用时调用的函数。

(message: LogMessage, transport: Transport) => LogMessage

更多信息:

https://github.com/megahertz/electron-log/blob/HEAD/docs/extend.md#hooks​github.com/megahertz/electron-log/blob/HEAD/docs/extend.md#hooks

多种日志实例

你可以创建不同的实例来采用不同的配置:

const electronLog = require('electron-log');
const log = electronLog.create('anotherInstance');

日志作用域

const log = require('electron-log');
const userLog = log.scope('user');

userLog.info('message with user scope');
// Prints 12:12:21.962 (user) › message with user scope

Web worker

可以在Web Worker中使用该模块。然而,ipc传输是不活跃的,所以来自worker的日志消息不会显示在主应用程序控制台中。

相关

electron-cfg:

https://github.com/megahertz/electron-cfg​github.com/megahertz/electron-cfg

设置你的Electron应用

转自:Electron-log的使用(一) - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值