node 日志分割-pm2-logrotate

2024-02-07 09:58
文章标签 日志 分割 node pm2 logrotate

本文主要是介绍node 日志分割-pm2-logrotate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pm2-logrotate这个npm模块还是很好的,使用也很简单

1.pm2 install pm2-logrotate

2设置pm2参数

.

3.pm2日志在哪:默认在root下,但是最后的日志放在/export/log下

 

 

 

 

先来看两个问题

问:pm2-logrotate是什么?

答:pm2-logrotate可以理解为是一个pm2的插件,它扩充了pm2本身没有功能:日志管理,所以它的运行需要依靠pm2,想用它必须先安装pm2才可以。

问:为什么有pm2-logrotate?

答:因为pm2本身没有日志分割功能,日志只能存在一个文件中,时间久了日志文件非常大,查看起来很麻烦,并且一些日志过一段时间后可能就没用了,依然留着对空间也是浪费,有了该插件,可以将日志文件根据我们的设定进行分割,比如按天进行分割,把每天的日志文件分别存储,这样查看起来是不是比较方便?并且还可以设置日志文件的最大总数,比如我们设置日志文件最多100个,那么当日志文件超过100个后会自动将最早的日志文件删除掉,我们也不用再花时间去整理日志文件了,是不是很省心?

安装

NPM官网地址:https://www.npmjs.com/package/pm2-logrotate

安装:pm2 install pm2-logrotate(前提是已安装过pm2)

安装特定版本:pm2 install pm2-logrotate@2.2.0

参数介绍

 

安装完毕使用方法如上图:pm2 set pm2-logrotate:max_size 1K

格式是:pm2 set pm2-logrotate:{paramName} {value}

命令设置具体的参数,支持的参数有:

l Compress:是否通过gzip压缩日志

l max_size:单个日志文件的大小,比如上图中设置为1K(这个其实太小了,实际文件大小并不会严格分为1K)

l retain:保留的日志文件个数,比如设置为10,那么在日志文件达到10个后会将最早的日志文件删除掉

l dateFormat:日志文件名中的日期格式,默认是YYYY-MM-DD_HH-mm-ss,注意是设置的日志名+这个格式,如设置的日志名为abc.log,那就会生成abc_YYYY-MM-DD_HH-mm-ss.log名字的日志文件

l rotateModule:把pm2本身的日志也进行分割

l workerInterval:设置启动几个工作进程监控日志尺寸,最小为1

rotateInterval:设置强制分割,默认值是0 0 * * *,意思是每天晚上0点分割,这个足够了个人觉得

设置完毕后可通过pm2 conf pm2-logrotate来查看详细的配置。

存在问题

我在使用过程中发现一个问题:只有当日志文件大小超过上限时都会把日志追加到最新的文件中,比如设置了日志文件名为app-out.log,日志文件大小为1M,那么在app-out.log文件没有超过1M时,即使第二天新建了日志文件app-out_yyyy-mm-dd_hh-mm-ss.log,但是依然会把日志追加到app-out.log中而非新建的日志文件中,更坑的是,在超过设定的大小后,它是把超出部分写到新的日志文件中,然后继续在app-out.log中追加- -,在官方文档中也没有发现对这个问题的说明。

不过,值得高兴的是,万能的网友解决了这个问题!Github地址在这里,请开心享用。

 

 

 

 

使用pm2-logrotate进行pm2日志切割,测试是按照文件大小1k切割;

安装

pm2 install pm2-logrotate

设置 重启

截图

截图是按照文件大小分割,如果文件小于设置分割的大小,每天也会自动分割一次。

 

https://stackoverflow.com/questions/44302076/pm2-logrotate-keeps-generating-new-logs

大家也可以不看文章,直接执行下边的命令

复制代码

pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:compress false 
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss 
pm2 set pm2-logrotate:max_size 10M 
pm2 set pm2-logrotate:retain 7 
pm2 set pm2-logrotate:rotateInterval '0 0 * * * '
pm2 set pm2-logrotate:rotateModule true 
pm2 set pm2-logrotate:workerInterval 30      

复制代码

 

注意:
pm2默认会将日志存储在/root/.pm2/logs下。
有的时候,如果日志过多,但是不知道日志放在哪里,可以用find / -size +100M -exec ls -lh {} ;来查看,一般情况下很有可能就是pm2操作的日志过大,造成了资源占用。也可以使用 du -h --max-depth=1 /路径 查询文件夹占用显示该目录占用空间的总和,如:du -h --max-depth=1 /var

这篇关于node 日志分割-pm2-logrotate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687350

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N