【问题标题】:Temporarily route stdout/stderr of a forked mongod process to console临时将分叉的 mongod 进程的 stdout/stderr 路由到控制台
【发布时间】:2017-11-18 11:51:00
【问题描述】:

我使用以下命令行参数启动了一个 mongodb 服务器实例

mongod --port 12345 --fork --logpath mongodb/test/logs/log.txt --dbpath mongodb/test/wiredTiger

如何临时让这个数据库实例将其 stdout/stderr 消息写入我的控制台窗口?

或者是否可以通过 mongo 客户端连接到它并指示服务器将这些消息回显到该客户端?

【问题讨论】:

    标签: linux mongodb console stdout


    【解决方案1】:

    如果您的服务器在 *nix 环境中运行,您可以从终端使用 tail 命令,如下所示:

    tail -f /${path}/mongodb/test/logs/log.txt
    

    它只会在控制台屏幕中为您提供 log.txt 文件的滚动视图。

    【讨论】:

    • 我不确定该日志是否真的包含将输出到 stdout 和 stderr 的所有信息。感觉好像缺少一些客户端连接。
    • documentation 声明 --logpath 将所有诊断日志记录信息发送到日志文件而不是标准输出。所以,在我看来,所有信息都在这个文件中。
    【解决方案2】:

    对不起,我不是 mongod 的用户,所以我在这里猜测:

    Mongod 似乎是使用 coutcerr 流的 c++ 程序,例如参见 initializer.cpp:95(即该文件的第 95 行,您可能需要向下滚动一下)

    问:mongod 命令是否会将所有内容(stdout、stderr)重定向到logpath 中给出的日志文件?如果是这样,也许只是删除'logpath'选项。 (尚未测试。)

    要测试输出到哪里,可以尝试使用一些无效的启动参数运行它,看看输出到哪里。

    【讨论】:

      【解决方案3】:

      在没有--fork--log 的情况下启动它,以便它将在前台运行并将日志写入控制台:

      mongod --port 12345  --dbpath mongodb/test/wiredTiger
      

      这将在端口 12345 上启动 db

      【讨论】:

        猜你喜欢
        • 2011-04-22
        • 2021-10-01
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多