gpt4 book ai didi

reactjs - 如何从日志文件而不是应用程序日志输出日志

转载 作者:行者123 更新时间:2023-12-02 18:19:15 24 4
gpt4 key购买 nike

我在Docker中有一个React应用程序,在使用Docker logs命令时它显示了这样的输出日志,这是应用程序日志

NODE_ENV=production node ./build/server/index.js

2019-08-23T09:49:58.127Z - info: Application logs file: /root/.application.log Warning: connect.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process. 2019-08-23T09:49:58.192Z - info: HTTP server is now running on http://localhost:8080



我正在将实际日志写入名为ui.log的文件

06:51:32.021 INFO time="2019-08-23T06:51:32.021Z"



如何将此日志转发到docker日志?

我在Dockerfile中尝试了此命令 RUN ln -sf /dev/stdout /app/ui.log
但它仍然无法正常工作

最佳答案

您可以为此使用入口点,但是要记住,在这种情况下,npm进程将在后台运行,而尾部日志文件将是根进程tail -f /root/applog.log

在生产系统中不建议这样做,但是您可以利用开发的优势。

FROM node:alpine

COPY . /root
WORKDIR /root
RUN echo $'#!/bin/sh \n\
npm run start & \n\
sleep 2 # give testServer time to create the newest log \n\
exec tail -f /root/applog.log ' >> /entrypoint.sh
RUN chmod 755 /entrypoint.sh
EXPOSE 3000
ENTRYPOINT [ "/entrypoint.sh" ]

该入口点在后台启动npm,然后使用exec运行尾部。 exec替换pid 1,以便信号通过。

您可以进一步查看 here来处理尾部的PID,但不要忘记检查在您情况下不起作用的第一个答案的注释。

但是在Docker的上下文中,将日志写入文件没有任何好处,因为Docker应该运行并终止,而不是保留日志文件。

另一件事,例如,如果您将AWS fargate放在那里,则无需管理服务器即可运行容器,因此永远不会到达该文件,因此在这种情况下,将日志写入文件将永远对您没有帮助。

我建议将所有日志写入Docker上下文中的控制台日志。

这是您可以在nodejs中处理日志的教程。

winston-logging-tutorialusing-winston-a-versatile-logging-library-for-node-js

关于reactjs - 如何从日志文件而不是应用程序日志输出日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com