如果长度超过certian长度,Nodejs将删除文件的顶行

时间:2017-03-20 19:59:23

标签: node.js file logging

  

注意:对此有各种类似的问题,但它们不适用于nodejs。请不要将此问题标记为重复,除非它与标记为的问题重复。

     

注意this question没有回答我的问题,它解释了如何从文件中删除x行,而不是从文件中保留x行。该问题没有解释如何获取文件的行长度并使用它来修剪某些行。我回答了这个问题,因为我找到了答案。那个答案应该清楚。

在我的应用程序中,日志文件在正常使用期间会向其写入许多行日志。为了节省磁盘空间,我想删除日志文件超过设定数量的第一行。

例如,如果最大行长度为5(例如,不是我想要的那样),那么:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6

会转换为:

Line 2
Line 3
Line 4
Line 5
Line 6

并且

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7

会转换为:

Line 3
Line 4
Line 5
Line 6
Line 7

注意:这个问题被标记为,所以我想在nodejs中找到一个没有任何库/依赖项的答案(原生fs很好)

1 个答案:

答案 0 :(得分:0)

我在suggested duplicate找到了部分答案,但我想说明如何根据我的情况进行调整:

var fs = require('fs')
fs.readFile(filename, 'utf8', function(err, data){
    if (err){
        throw err;
    }
    var linesCount = data.split("\n").length;
    var wantedLines = data.split("\n").slice(~7+1);//keep 7 lines
    fs.writeFile(filename, wantedLines);
});