electron 单个实例控制以及日志输出

这篇具有很好参考价值的文章主要介绍了electron 单个实例控制以及日志输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

electron 单个实例控制

在使用electron打包的应用程序的时候,点击应用图标会打开多个实例,要想控制单个实例,需要通过 app.requestSingleInstanceLock() 判断当前程序的实例是否为当前取得锁, 或者说, 当前实例是否为单一的固定实例, 如果当前实例没有取到锁, 返回 false,说明当前实例应该被关闭

// 阻止打开多个应用程序
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
  app.quit();
} else {
  app.on('second-instance', (event: any, commandLine: any, workingDirectory: any) => {
    // 当运行第二个实例时,将会聚焦到myWindow这个窗口
    if (context.mainWindow) {
    // 程序被最小化的时候还原用restore
      if (context.mainWindow.isMinimized()) {
        context.mainWindow.restore();
      }
      context.mainWindow.focus();
    } else {
      if (!context.mainWindow) {
        if (app.isReady()) createWindow();
      }
    }
  });
}

这是在网上能查出来的答案,这么写也能满足基本的功能,但是有缺陷,假如我将程序设置到了后台隐藏起来而不是通过缩小,通过app.restore()将程序唤醒后的页面没办法输入和点击,会出现一个卡死的状态?这点暂时不清楚为什么,第二个就是app.quit()关闭程序的时候,会造成页面闪一下(就是程序可能 已经运行起来,突然一下关闭的)
针对上面两个问题,做了如下的处理:文章来源地址https://www.toymoban.com/news/detail-525021.html

  1. 对于隐藏到后台的程序,通过context.mainWindow.show()context.mainWindow.setSkipTaskbar(false);唤醒
  2. 使用app.exit()代替app.quit()

electron日志输出

  1. 安装electron-log
    npm -i --save-dev electron-g
  2. 实现logger.ts
// logger.ts
// 引入模块
import log from 'electron-log';

// 关闭控制台打印
log.transports.console.level = false
log.transports.file.level = 'debug'
log.transports.file.maxSize = 10024300 // 文件最大不超过 10M
// 输出格式
log.transports.file.format = '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}]{scope} {text}'
let date = new Date()
let dateStr = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate()
// 文件位置及命名方式
// 默认位置为:C:\Users\[user]\AppData\Roaming\[appname]\electron_log\
// 文件名为:年-月-日.log 
// 自定义文件保存位置为安装目录下 \log\年-月-日.log 
log.transports.file.resolvePath = () => 'log\\' + dateStr + '.log';

// 有六个日志级别error, warn, info, verbose, debug, silly。默认是silly
export default {
  info(...param:any[]) {
    log.info(param)
  },
  warn(...param:any[]) {
    log.warn(param)
  },
  error(...param:any[]) {
    log.error(param)
  },
  debug(...param:any[]) {
    log.debug(param)
  },
  verbose(...param:any[]) {
    log.verbose(param)
  },
  silly(...param:any[]) {
    log.silly(param)
  }
}

  1. 在background.ts中引入logger.ts
import logger from './logger';

// 调用logger方法
logger.info('xxx')
  1. 日志输出位置在安装目录下的logs文件中

到了这里,关于electron 单个实例控制以及日志输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Logback日志记录只在控制台输出sql,未写入日志文件【解决】

    原因:持久层框架对于Log接口实现方式不一样,日记记录的位置及展示方式也也不一样 可以分别配置到两个环境中,dev用StdOutImpl,prod用Slf4jImpl或者其他的都行,具体需要看他是如何实现的,使用logger对象输出的都是会写入日志的,使用System.out或err的只会在控制台显示,以下是实验

    2024年02月09日
    浏览(64)
  • IntelliJ IDEA 中的控制台输出日志中文乱码之解决办法

    IntelliJ IDEA 中的控制台输出日志中文乱码通常是由于控制台使用的默认字符编码与系统不匹配所致。要解决这个问题,请尝试以下方法: 打开 IntelliJ IDEA, 在顶部菜单栏查看 Run/Debug Configurations 列表。这是您项目中所使用的配置列表。 选择您要修改的 Run/Debug Configuration。如果有

    2024年02月08日
    浏览(74)
  • .NET Core 实现日志打印输出在控制台应用程序中

    在本文中,我们将探讨如何在 .NET Core 应用程序中将日志消息输出到控制台,从而更好地了解应用程序的运行状况。 在 .NET Core 中,日志输出打印是使用 Microsoft.Extensions.Logging 命名空间中的类和方法实现的。首先,我们需要确保在项目中添加了以下必要的依赖包: Microsoft.Ex

    2024年02月11日
    浏览(170)
  • Eclipse控制台输出log4j日志乱码解决

    1. 出现乱码可能是编码格式对应不起来,主要是Eclipse控制台编码和log4j编码的匹配 log4j.properties      主要是查看这两个地方编码一致不一致,如果不一致则手动更改成一致编码,GBK或UTF-8

    2024年02月15日
    浏览(67)
  • windows下tomcat控制台按天输出catalina.out日志

    windows服务器情况下,无法和linux服务器一样,启动web服务之后,直接tail查看日志,而windwos控制台的输出空间有限,如果遇到大量错误的情况下,console日志刷新太快,无法看到首次错误是在哪里出现的,会产生很多不必要的麻烦,所以从网上查找了windows控制台信息输出到文件

    2024年02月05日
    浏览(54)
  • .net 6 web api项目添加日志(Serilog)管理,将日志输出到控制台、文件、数据库

    1.在nuget安装下面几个包 Serilog Serilog.AspNetCore //用于日志输出到控制台 Serilog.Formatting.Compact //用于日志输出到mysql数据库 Serilog.Sinks.MySQL //用于日志输出到文件 Serilog.Sinks.RollingFile 2.在Program.cs文件配置日志参数,依赖注入 别忘了在appsettings.json添加数据库连接字符串 3. 使用日志

    2024年02月10日
    浏览(82)
  • springboot日志使用 SLF4J+Logback 实现(springboot默认的日志实现),日志打印到控制台及日志输出到指定文件

    还是直接上代码 @Slf4j 这玩意 默认支持 不用引入 yml 配置文件 下面分享 xml 方式 在 资源目录下创建 logback-spring.xml 粘贴走 即可 重启 看控制台变化 还有磁盘 有没有写入 坑 : 我在创建的时候 发现 xml 没有生效 排查了半天 发现 在创建 logback-spring.xml 这个文件的时候 我不是手

    2024年04月22日
    浏览(80)
  • 23、springboot日志使用入门-- SLF4J+Logback 实现(springboot默认的日志实现),日志打印到控制台及日志输出到指定文件

    就是springboot的默认的日志依赖实现。创建项目的时候存在这个依赖里面。 下面的日志实现就是基于 SLF4J+Logback SLF4J+Logback:SLF4J是门面,Logback是实现 设置日志的级别,可通过以下方式: ▲ 改变Spring Boot的核心日志级别 ▲ 改变程序组件(包括所有各种框架)的核心日志级别

    2024年02月03日
    浏览(61)
  • for循环的输出控制(输出1-100中的奇数、偶数、倍数以及公倍数)

    一、输出1-100中所有的奇数: i = 1 while i = 100:     if i%2 == 1:         print(i)     i += 1   法二: for i in range(1,101):     if i%2 == 1:         print(i)   法三: for i in range(1,101,2):     print(i)     二、输出1-100中所有的偶数: for i in range(1,101):     if i % 2 == 0:         print(i)   三、

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包