如何在 pino.js 记录器中轮换日志文件

Kak*_*ime 6 javascript logging node.js pinojs

我正在尝试使用 pino 登录到我的节点应用程序服务器,并且我确实收到了一些大型日志,因此每天轮换文件对于以后读取日志会更有用。

我可以使用摩根做到这一点,但使用皮诺我找不到办法做到这一点。我尝试根据当前日期动态分配文件夹,但在主 app.js 文件中这样做意味着它只会运行一次,循环日期意味着停止并重新运行服务器。

这是我的代码:

var date = d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate();
const fileLogger = pino(
     pino.destination({
          dest: './log/userLog '+date, sync: false
     })
);
Run Code Online (Sandbox Code Playgroud)

lif*_*foo 7

正如pino 文档中所述,您需要使用单独的工具进行日志轮换。

使用logrotate你可以轻松做到这一点。

node myapp.js > /var/log/myapp.log
Run Code Online (Sandbox Code Playgroud)

在服务器上安装 logrotate 并/etc/logrotate.d/myapp使用 logrotation 配置创建一个文件,例如:

/var/log/myapp.log {
   su root
   daily
   rotate 7
   delaycompress
   compress
   notifempty
   missingok
   copytruncate
}
Run Code Online (Sandbox Code Playgroud)

请务必阅读其配置文档以实现右旋转。显然,如果您遇到问题,请探索有关 logrotate 的许多其他问题。