[eggjs/egg]egg-scripts日志输出目录

2024-08-05 330 views
4

目前egg-script slogs输出目录指定为 HOME下的logs目录 没有则会创建 image 而在生产环境上 我并没有在HOME目录下创建文件夹的权限,这个权限也不能给。但是在应用的目录创建文件的权限是有的

建议能指定egg-scripts的 logs 输出目录

回答

0

Config 可以配置,请查阅文档。

5

你说的是egg的日志吧,那个我已经配置了。 我说的是egg-scripts的logs目录的更改。它们的配置应该不是公用的,如果文档上有说明,请帮忙指出。谢谢

9

看了一下node-homedir的实现 暂时我将启动命令更改为

"start": "MOCK_HOME_DIR=./mock_home egg-scripts start --daemon",

我将MOCK_HOME_DIR环境变量设置为一个我有权限的目录下,可以暂时实现我的需求,不知道这种方式有没有隐患

8

@atian25 就算改掉了stdout,但是run生成的json文件还是没权限写入的。尤其是在严格限制执行环境的比如gae上

1

run 生成的文件?这个是在项目根目录下的,GAE 应该有配置 tmp 映射的地方吧,这文件不生成,很难分析线上问题的。

2

eggjs可以指定run目录吗,相对于系统路径而不是项目路径的

6

如果想推动这个解决,很简单。谁来梳理下,现在到底是哪些文件,导致了失败,逐个讨论就完了。

从上面的讨论,我得到的信息是,有 stdout,stderr 入参,再加上 rundir 配置,应该就没问题了吧

4

首先egg-script没有参数可以指定输出目录(logs文件夹位置),你给我的建议是指定 stdout,stderr 入参。我看了下实现 image 就算我同时指定了stdout,stderr 入参 上图标红的地方 依旧会在home下创建logs 文件夹,但我的场景是我没有在home目录下创建文件夹的权限,所以导致启动不了。

我目前的解决方案: 在你们start.js 使用了node-homedir

image

我看了一下node-homedir的实现:

image

所以我在启动的时候指定了MOCK_HOME_DIR环境变量

"MOCK_HOME_DIR=./mock_home egg-scripts start --daemon"

暂时解决了home下没有权限的问题,但是我这么做相当于是依赖第三方的实现,如果你们后续改版 不使用node-homedir,那么我这种临时做法就会出问题。

所以回到这个issue本身 我的需求就是可以指定这个logDir

还有 @4tj 的rundir配置

1

got,明白了。

@fall-wind 可以提个 PR 直接支持下。

0

@fall-wind 请问现在解决了吗,要如何修改egg-script的指定输出目录(logs文件夹位置)

5

目前暂时在启动的命令添加一个环境变量 这是我的

"start": "MOCK_HOME_DIR=./mock_home egg-scripts start --daemon",

mock_home是你自己建的一个文件夹

3

感谢,这个问题已经解决了

9

请问你这个写法是有哪里需要额外的配置吗?直接更改 package.json 中的 script,会出现报错

MOCK_HOME_DIR' 不是内部或外部命令,也不是可运行的程序或批处理文件。
2

这个issue不应该关闭吧,因为这个问题还是没有解决的。最好的方案还是应该在egg-scripts增加配置,而不是指定环境变量。 @atian25

6

这里windows和*nix命令不一样,他们应该是linux系统。针对这个有一个跨平台的指令,试试这样写: "start": "cross-env MOCK_HOME_DIR=./mock_home egg-scripts start --daemon",