跳到主要内容
CNode
查看回复

回复 (19)

L
lvgithub#189 年前

@hyj1991 你这个方案写在一个文件,不是还是会出现冲突吗

H
hyj1991#169 年前

因为 cluster 的问题,你的日志如果按天分割,那么 cluster 出来的每一个进程的定时器判断过 12 点是不一致的,导致会丢失掉最后一个子进程覆盖生成第二天日志之前的部分

解决办法是 log4js 的日志分割模式不要使用 dateFile,即不要按天分割,写到一个日志文件 分割日志在服务器上写一个 linux 的 crontab 定时任务去做,这样就不会丢日志了

X
xiaozhongliu#149 年前
引用 m1911star__legacy_5a72f4ab9d371d4a059ef0b0@XiaozhongLiu 太难了,我们产品是单纯的jq写前端,是我的主业,还维护一个node sdk做数据采集,坑真多

@m1911star js是可以写出干净简练, 可维护性很好的代码的, 参考我的项目. 奈何... jq挺好用, 但何不尝试一下更好用的vue, 进而react.

引用 xiaozhongliu@m1911star 哈哈既然生产在用了, 那就最好不变

@XiaozhongLiu 太难了,我们产品是单纯的jq写前端,是我的主业,还维护一个node sdk做数据采集,坑真多

引用 xiaozhongliu@m1911star 直接上新版呗, 我给公司微服务在用

@XiaozhongLiu 怕坑多啊,维护着一个sdk,版本更新比较慎重

X
xiaozhongliu#109 年前
引用 m1911star__legacy_5a72f4ab9d371d4a059ef0b0@XiaozhongLiu log4js版本是1.1.0

@m1911star 直接上新版呗, 我给公司微服务在用

X
xiaozhongliu#79 年前
引用 m1911star__legacy_5a72f4ab9d371d4a059ef0b0@XiaozhongLiu 可以的,通过设置之后,只是会出现一部分丢失

@m1911star 不清楚你这什么原因, 我这个是ok的, 可以参考: https://github.com/xiaozhongliu/node-api-seed/blob/master/util/logger.js 我当时log4j新版本升级之后对于pm2 cluster模式不会写入文件, 装了pm2-intercom这个模块解决了.

引用 xiaozhongliu我记得是直接写不到文件吧

@XiaozhongLiu 可以的,通过设置之后,只是会出现一部分丢失

Q
qiu363#39 年前

可以写多个日志文件,开4个线程的话就会写4份,每个单独写一份,需要统计的话用脚本处理下就好了

S
sharp-c#29 年前

pm2 cluster 模式下会其启动多个 node 实例,如果你每个实例上跑的是相同代码,那么很可能你写入文件的路径是相同的。如果是这种情况,多个实例在同时写一个文件,却没有并发控制,所以会有一定概率部分数据互相覆盖,造成数据丢失。 那么解决问题也就有思路了,最例如最简单的可以不同实例写入不同文件。

X
xiaozhongliu#19 年前

我记得是直接写不到文件吧

参与回复

登录后即可参与回复。登录