如何在 Node.js 中追加到新行

IT技术 javascript node.js newline
2021-03-04 01:48:54

我正在尝试使用 Node.js 将数据附加到日志文件中,这工作正常,但不会转到下一行。 \n在我下面的函数中似乎不起作用。有什么建议?

function processInput ( text ) 
{     
  fs.open('H://log.txt', 'a', 666, function( e, id ) {
   fs.write( id, text + "\n", null, 'utf8', function(){
    fs.close(id, function(){
     console.log('file is updated');
    });
   });
  });
 }
3个回答

看起来您正在 Windows 上运行它(给定您的H://log.txt文件路径)。

尝试使用\r\n而不仅仅是\n.

老实说,\n很好;您可能正在记事本或其他不呈现非 Windows 换行符的内容中查看日志文件。尝试在不同的查看器/编辑器(例如写字板)中打开它。

仅供参考,在 Notepad++ 中,您可以找到所有“\\n”替换“\n”与对话框底部选择的“扩展”搜索模式。
2021-05-03 01:48:54
在记事本中查看:)
2021-05-15 01:48:54

请改用 os.EOL 常量。

var os = require("os");

function processInput ( text ) 
{     
  fs.open('H://log.txt', 'a', 666, function( e, id ) {
   fs.write( id, text + os.EOL, null, 'utf8', function(){
    fs.close(id, function(){
     console.log('file is updated');
    });
   });
  });
 }
(2/2) 尽管如此,我还是赞成你的答案,因为如果我们生活在一个完美监管的世界里,这将是正确的答案。
2021-04-19 01:48:54
(1/2) 请注意,由于 node.js 可以在许多不同的环境中运行,因此可以将您的应用程序从 Windows 环境移动到 linux 环境。这意味着如果您的应用程序使用附加日志,os.EOL您将有一些行以/r/n(从应用程序在 Windows 上运行时开始)结尾,然后您将有行以/n(当应用程序在 linux 上运行时)结尾这可能会带来一些麻烦,尤其是在日志文件的任何自动解析到位的情况下。我决定只使用/n.
2021-05-05 01:48:54
这是最好的答案,因为它可以跨平台工作。
2021-05-14 01:48:54
好吧,我不得不将使用fs.writewith的应用程序打包os.EOL成二进制文件。我曾经pkg为 Windows 生成一个二进制文件。执行时,最后一个写入的记录会附加一个新行(如预期的那样);但是,似乎其他 Windows 应用程序对待它是一个新记录。我正在寻找解决方法。
2021-05-14 01:48:54
我使用 linux 但喜欢这种方法,因为我可能希望在将来使用时具有可移植性。
2021-05-17 01:48:54

使用\r\n组合在节点 js 中追加新行

  var stream = fs.createWriteStream("udp-stream.log", {'flags': 'a'});
  stream.once('open', function(fd) {
    stream.write(msg+"\r\n");
  });