Node.js에서 새 줄에 추가하는 방법


96

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');
    });
   });
  });
 }

4
Windows를 사용 중이거나 Windows 기반 텍스트 편집기를 사용하여 파일을보고 있으므로 CRLF 쌍이 필요 \r\n합니까?
Phrogz

답변:


158

Windows에서 실행중인 것 같습니다 ( H://log.txt파일 경로 제공).

\r\n대신을 사용해보십시오 \n.

솔직히 \n괜찮습니다. 아마도 메모장이나 비 Windows 줄 바꿈을 렌더링하지 않는 다른 로그 파일을보고있을 것입니다. 다른 뷰어 / 편집기 (예 : 워드 패드)에서 열어보십시오.


2
:) 메모장에서보고되었다
마른 세수

참고로 Notepad ++에서 "\\ n"을 모두 찾을 수 있으며 "\ n"을 대화 상자 하단에서 선택한 "확장"검색 모드로 바꿀 수 있습니다.
Drew

94

대신 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');
    });
   });
  });
 }

14
(1/2) node.js는 다양한 환경에서 실행될 수 있으므로 Windows 환경에서 Linux 환경으로 애플리케이션을 이동할 수 있습니다. 응용 프로그램 사용 로그를 추가 수단 인 경우에 것을 os.EOL당신이 끝나는 몇 줄 것 /r/n(시간에서 응용 프로그램은 윈도우에서 실행되었다) 다음 방금로 끝나는 행을해야합니다 /n(시 응용 프로그램 실행 리눅스에서). 특히 로그 파일의 자동 구문 분석이있는 경우 문제가 발생할 수 있습니다. 나는 그냥 사용하기로 결정했습니다 /n.
Sharky

2
(2/2) 그럼에도 불구하고 우리가 완벽하게 규제 된 세상에 살았다면 정답이 될 것이기 때문에 나는 당신의 대답을 찬성했습니다.
Sharky

1
나는 리눅스를 사용하지만 나중에 사용하기 위해 이식성을 원할 수 있기 때문에이 접근 방식을 좋아했습니다.
sdkks

1
크로스 플랫폼에서 작동하기 때문에 이것이 가장 좋은 대답입니다.
Mike Chelen

글쎄, 나는 fs.write함께 사용되는 애플리케이션을 os.EOL바이너리로 패키징해야했다 . 내가 사용하는 pkgWindows 용 바이너리를 생성 할 수 있습니다. 실행되면 마지막으로 기록 된 레코드에는 예상대로 새 줄이 추가됩니다. 그러나 다른 Windows 응용 프로그램이 새로운 기록으로 취급하는 것처럼 보입니다. 해결 방법을 찾고 있습니다.
cogitoergosum

3

\r\n조합을 사용 하여 노드 js에 새 줄 추가

  var stream = fs.createWriteStream("udp-stream.log", {'flags': 'a'});
  stream.once('open', function(fd) {
    stream.write(msg+"\r\n");
  });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.