【问题标题】:Where does forever store console.log output?永远在哪里存储 console.log 输出?
【发布时间】:2014-01-28 01:27:36
【问题描述】:

我永久安装并使用它,发现它很有趣。

但我意识到日志被放置在其他地方。有什么窍门吗?

【问题讨论】:

    标签: node.js forever


    【解决方案1】:

    Forever 采用命令行选项进行输出:

    -l  LOGFILE      Logs the forever output to LOGFILE
    -o  OUTFILE      Logs stdout from child script to OUTFILE
    -e  ERRFILE      Logs stderr from child script to ERRFILE
    

    例如:

    forever start -o out.log -e err.log my-script.js
    

    更多信息请见here

    【讨论】:

    • 如果我不指定任何参数而只使用forever myapp,默认路径是什么?谢谢!
    • 我没有看到它记录在案 - 我认为它随着时间的推移而改变。我在 ~/.forever 文件夹中看到旧日志。但是我最近更新了,如果我没有指定日志文件名,至少在我的 mac 上,它会将 console.log 写入终端。
    • 如果文件已经存在,还需要 -a 作为选项。永远 -a -o out.log -e err.log my-script.js
    • LOGFILE 和 OUTFILE 有什么区别?对我来说,它们似乎包含完全相同的信息!
    • @Dominic LOGFILE 包括 all 输出,包括来自永久进程的输出,OUTFILE 仅包括来自您的子脚本的标准输出。
    【解决方案2】:

    默认情况下,Forever 会将日志放入~/.forever/ 文件夹中的随机文件中。

    您应该运行forever list 以查看正在运行的进程及其相应的日志文件。

    样本输出

    >>> forever list
    info:    Forever processes running
    data:        uid  command       script forever pid  logfile                         uptime
    data:    [0] 6n71 /usr/bin/node app.js 2233    2239 /home/vagrant/.forever/6n71.log 0:0:0:1.590
    

    但是,最好使用 -l 指定,如 bryanmac 所述。

    【讨论】:

    • 它并不总是一个随机文件。如果您在启动时使用 --uid 标志指定了一个 uid,那么它将使用指定的 uid 创建一个日志文件。
    【解决方案3】:

    如果你运行命令“forever logs”,你可以看到日志文件在哪里。

    来源:https://github.com/foreverjs/forever

    【讨论】:

      【解决方案4】:

      试试命令

      > forever logs
      

      > sudo forever logs
      

      您将获得日志文件的位置

      【讨论】:

        【解决方案5】:

        这是一个老问题,但我遇到了同样的问题。如果你想看到实时输出,你可以运行

        forever logs
        

        这将显示日志文件的路径以及脚本的编号。然后你可以使用

        forever logs 0 -f
        

        0 应替换为您想查看其输出的脚本编号。

        【讨论】:

          【解决方案6】:

          这对我有用:

          forever -a -o out.log -e err.log app.js
          

          【讨论】:

            【解决方案7】:

            需要正常做 forever start script.js 开始,并检查控制台/错误日志使用 forever logs 这将打印永久存储的所有日志的列表 然后您可以使用tail -f /path/to/logs/file.log,这会将实时日志打印到您的窗口。点击 ctrl+z 停止日志打印。

            【讨论】:

              【解决方案8】:

              Help 是您最好的救星,您可以调用一个日志操作来检查所有正在运行的进程的日志。

              forever --help
              

              显示命令

              logs                Lists log files for all forever processes
              logs <script|index> Tails the logs for <script|index>
              

              上述命令的示例输出,用于三个正在运行的进程。 console.log 输出存储在这些日志中。

              info:    Logs for running Forever processes
              data:        script    logfile
              data:    [0] server.js /root/.forever/79ao.log
              data:    [1] server.js /root/.forever/ZcOk.log
              data:    [2] server.js /root/.forever/L30K.log
              

              【讨论】:

                【解决方案9】:

                默认情况下,forever 将它需要的所有文件放入 /$HOME/.forever。如果您想更改该位置,只需在永久运行时设置 FOREVER_ROOT 环境变量:

                FOREVER_ROOT=/etc/forever forever start index.js
                

                【讨论】:

                  【解决方案10】:

                  您需要在要运行的文件名之前添加日志目标说明符。所以

                  forever -e /path/error.txt -o /path/output.txt 启动 index.js

                  【讨论】:

                    【解决方案11】:

                    基于 bryanmac 的回答。我只是将所有日志保存到一个文件中,然后用 tail 读取它。简单但有效的方法。

                    forever -o common.log -e common.log index.js &amp;&amp; tail -f common.log

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-05-22
                      • 1970-01-01
                      • 2015-01-03
                      • 1970-01-01
                      • 2019-11-23
                      • 1970-01-01
                      相关资源
                      最近更新 更多