【问题标题】:View logs of firebase functions in real time实时查看firebase函数日志
【发布时间】:2023-03-21 00:19:01
【问题描述】:

我正在使用firebase功能,这是我第一次使用节点。

我的问题很简单,至少我是这么认为的。

我创建了一个简单的函数,理论上,如果一个新字段被添加到数据库中,这个函数必须做出反应。

我的代码如下:

const functions = require('firebase-functions');


'use strict';


exports.newItem = functions.database.ref('/test')
  .onCreate((snapshot, context) => {


    snapshot = change.after;
    const val = snapshot.val();

    console.log('i´m alive');

    return null;
  })

;

我正在寻找在哪里查看我在“newItem”函数中的日志是否显示。

当我阅读时,我使用控制台中的“firebase 函数:日志”,但这会返回以前的日志,而不是实时的。

我还看到了使用:gcloud functions logs read,as I read here。

但这总是返回:-bash: gcloud: command not found 我已经安装了“gcloud functions”,但还是迷路了。

我觉得问题是否解释得不是很好,但总而言之,我寻找一个可以实时查看日志的控制台,就像它使用标签 logcat 的 intelij 或 android studio 一样。

我希望为初学者提供解释。

提前致谢和问候。

【问题讨论】:

    标签: node.js function firebase logging google-cloud-functions


    【解决方案1】:

    您可以使用Firebase console 实时查看日志。选择您的项目,点击左侧的 Functions 产品,然后点击 Logs 选项卡。

    【讨论】:

    • 他们对西班牙语的“日志标签”的翻译不清楚。这就是为什么他没有将这种鞭笞与他所扮演的角色联系起来的原因。非常感谢。
    • 是否也可以从终端读取实时日志?
    • @Doug Stevenson 将日志流式传输到终端会非常有帮助。用于日志的 firebase 控制台 Web 界面使用起来非常缓慢,而且它目前也没有将来自 javascript 的 console.log 放入“信息”过滤器中。我也得看看调试信息。
    • 如果您有功能请求,请将其提交给 Firebase 支持。 support.google.com/firebase/contact/support
    • 对于 CLI 实时日志记录,请参阅 Geoffery 或我的答案。 npx firebase-logging --project=YOUR_PROJECT --freq=1500
    【解决方案2】:

    您还可以在控制台/cmd中查看已部署功能的日志:

    使用 Firebase CLI
    要使用 firebase 工具查看日志,请使用 functions:log 命令:

    firebase functions:log
    

    要查看特定函数的日志,请提供函数名称作为参数:

    firebase functions:log --only <FUNCTION_NAME>
    

    有关完整的日志查看选项,请查看函数帮助:日志:

    firebase help functions:log
    

    https://firebase.google.com/docs/functions/writing-and-viewing-logs#viewing_logs

    【讨论】:

    • 我用这种方法遇到的问题是 CLI 日志命令中似乎没有跟随 / 尾 / 类似选项,但这在 GCP 控制台中是可能的。
    • 如果函数在模拟器中运行,这是否有效?
    【解决方案3】:

    对于我们这些喜欢 CLI 版本的人

    npx firebase-logging --project=YOUR_PROJECT --freq=1500
    

    这将从 Firebase 获取日志,每 1.5 秒刷新一次。感谢 Geoffery 和他的回答,为您提供灵感。

    【讨论】:

    • 谢谢,我对这种方法的问题是它刷新了整个事情,有没有办法只关注变化?
    【解决方案4】:

    这些日志可以在 Firebase 控制台中查看(函数 -> 日志),但是由于隐藏在手风琴扩展中的细节很难查看。

    使用 CLI,您可以使用“-n”参数指定要返回的行数:

    firebase functions:log -n 100

    您还可以通过不断获取日志并打印出新条目来模拟实时日志。

    https://github.com/fireRun-io/firebase-logging

    const cmd = require("node-cmd");
    const argv = require("yargs").argv;
    
    let last = [];
    const project = argv.project ? `--project ${argv.project}` : "";
    const lines = argv.lines ? argv.lines : 100;
    
    if (argv.h) {
      console.log(
        "Format: node firebase-logging.js --project=[projectId] --n=[number of lines]"
      );
      return;
    }
    
    const getLogs = () => {
      cmd.get(
        `firebase ${project} functions:log -n ${lines}`,
        (err, data, stderr) => {
          if (err) {
            console.error(err);
          }
    
          const splitData = data.trim().split("\n");
          const diff = splitData.filter((x) => !last.includes(x));
    
          if (diff.length > 0) {
            console.log(diff.join("\n"));
          }
    
          last = [...splitData];
        }
      );
    };
    
    getLogs();
    setInterval(() => {
      getLogs();
    }, 2000);
    
    

    【讨论】:

      【解决方案5】:

      Cloud SDK 支持 Live tailing。

      gcloud alpha logging tail
      

      https://cloud.google.com/logging/docs/reference/tools/gcloud-logging#live-tailing

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 2016-03-01
        • 1970-01-01
        • 2016-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多