OpenFin 是否可以将日志保存到私有数据库以及如何从 %LocalAppData%\openfin\apps\<app>\app 中检索日志.log

Can OpenFin save Logs to a private database and how to retrieve logs from %LocalAppData%\openfin\apps\<app>\app.log

提问人:DalexYu 提问时间:6/17/2023 更新时间:7/5/2023 访问量:78

问:

系统版本

当前在系统方面运行的内容,使用此设置:

  • OpenFin Process Manager 版本:RVM = 8.1.0.4
  • 节点 .js:v16.15.0
  • 视窗 10
  • 带有 C# .NET 后端的 Angular 应用程序

问题:

目前,所有应用程序日志都保存在本地用户的计算机上,而不是集中保存在某个位置以供查看和调试。我在 OpenFin 文档中注意到有一个方法,但文档只解释了该函数采用的参数。我尝试在 OpenFin 实例中手动运行此方法,但没有得到任何输出。是否有更多关于 OpenFin 如何将日志发送到远程位置或如何将日志定向到特定目的地的文档?sendApplicationLog()

  • OpenFin 可以直接将这些日志导入到受保护的数据库中吗?

  • 除了将控制台输出中的所有内容馈送到合并位置之外,是否有好的替代方法?

    • 尝试:
      • 我尝试使用 Angular 的全局错误捕获功能来拦截任何全局错误,但它没有捕获警告。
      • 除了错误之外,还可以调整全局以处理警告和信息吗?errorHandler

谢谢。

Angular TypeScript 日志记录 错误处理 Openfin

评论


答:

0赞 John Kennedy 6/26/2023 #1

OpenFin 提供了一项服务,可以对应用程序日志进行加密并上传到由 OpenFin 管理的远程位置。然后,您可以使用日志管理器 API 检索日志。

有两种方法可以激活它。

可以在应用程序清单中启用应用日志管理

{
  "licenseKey": "contract_identifier",
  "startup_app": {
    "enableAppLogging": true,
    "logManagement": {
      "enabled": true, 
    }
  }
}

或者,您可以使用您在问题中提到的 api。sendApplicationLog

相关的 OpenFin 开发者文档可以在这里找到:

https://developers.openfin.co/of-docs/docs/log-management

https://developers.openfin.co/of-docs/reference/get_api-v1-applications

使用以下设备需自行承担风险

有一个未记录且不受支持的功能,允许您指定要将日志发送到的备用位置。

应用程序清单需要包含以下内容:

"logManagement": {
  "enabled": true,
  "url": "<YOUR_URL_ENDPOINT>"
}

OpenFin 支持不会在哪些 RVM/运行时版本中可用,您应该考虑在较新版本中可以毫无警告地删除它的可能性。

评论

0赞 DalexYu 6/27/2023
嘿约翰,谢谢你的回答。我能够从 openfin 站点找到 github.com/built-on-openfin/container-starter/tree/main/how-to/...,这似乎表明可以重新路由到端点。在本文的最后,似乎也可以更改位置:openfin.zendesk.com/hc/en-us/articles/......我想知道是否使用这些知识将其转发到 S3 存储桶之类的东西进行日志存储和检索,以及您是否有任何想法。
0赞 John Kennedy 6/27/2023
这是新的(ish)。尚未进入 OpenFins 主文档,发行说明中也未提及,因此不知道它有哪些版本可用。乍一看,它看起来不错,似乎适合您的用例,我将对其进行更多研究并更新我的答案以反映这一点。谢谢
0赞 DalexYu 6/29/2023
我按照演示进行了操作,并且能够按照演示中显示的内容将其记录到本地文件夹。我把它放在一个单独的应用程序上,只听一个 localhost 端口。现在我正在使用 nestjs 将其移植到应用程序中工作。总的来说,我对此非常陌生,并且我很难知道需要哪种类型的 API 才能将日志重定向到 AWS S3 之类的东西。似乎 OpenFin 会自动向清单 json 中指定的 URL 发送 Post 请求,并附加了 /api/v1/logs。但我不确定有效载荷中的具体内容。
0赞 John Kennedy 7/5/2023
我就此向 OpenFin 支持部门询问了这个问题,他们建议“此属性是一个未记录的功能”、“一个较旧的功能”和“不受官方支持”我不会依赖它在将来的版本中可用,或者在可用的地方稳定,并且不建议使用它。
0赞 DalexYu 7/7/2023
嘿 John,我最终使用了 api 端点方法,在其中指定 /api/v1/logs,然后我将使用 NestJS post 侦听器在该端点进行拦截。它能够达到我的目的,并将日志作为带有文件流的多部分形式。每个请求的正文还支持 setApplogUsername 等方法。同样有趣的是,支持人员告诉您,因为他们将我引导到该资源,并告诉我我所做的工作对 OpenFin RVM 很好。我想知道我是否可以用我能够想出的解决方案来编辑您的答案。谢谢你的帮助。