【问题标题】:Nodejs remove top lines of file if longer than a certian length如果长度超过一定长度,Nodejs会删除文件的顶部行
【发布时间】:2017-08-12 06:39:39
【问题描述】:

注意:有各种类似的问题,但它们不适用于 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很好)

【问题讨论】:

  • 只要在 npm 上有 'log-rotate' 和 'logrotate-stream' 模块,就不需要重新发明轮子。如果需要,我可以提供一个使用示例。
  • 编辑解释它如何不是一个副本。

标签: nodejs nodejs node.js file logging


【解决方案1】:

我在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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多