2012-04-30 23 views
46

Próbuję dołączyć dane do pliku dziennika przy użyciu pliku Node.js, który działa poprawnie, ale nie przechodzi do następnego wiersza. \ n nie działa w mojej funkcji poniżej. Jakieś sugestie? DziękiNowa linia w Node.js

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

Czy jesteś w systemie Windows/przy użyciu edytora tekstu opartego na systemie Windows, aby wyświetlić plik, a zatem potrzebujesz pary CRLF, '\ r \ n'? – Phrogz

Odpowiedz

83

Wygląda jak używasz tego w systemie Windows (biorąc pod uwagę swoją H://log.txt ścieżkę do pliku).

Spróbuj użyć \r\n zamiast tylko \n.

Szczerze mówiąc, \n jest w porządku; prawdopodobnie przeglądasz plik dziennika w notatniku lub coś innego, co nie powoduje wyświetlania znaków nowej linii w systemie innym niż Windows. Spróbuj otworzyć go w innym przeglądarce/edytorze (np. Wordpad).

+1

był wyświetlany w notatniku :) – FacePalm

35

Zamiast tego należy użyć stałej 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'); 
    }); 
    }); 
    }); 
} 
+4

(1/2) Należy pamiętać, że skoro plik node.js może działać w wielu różnych środowiskach, możliwe jest przeniesienie aplikacji z, powiedzmy, środowiska Windows do wersji Linux. oznacza to, że jeśli twoja aplikacja dodaje logi za pomocą 'os.EOL', będziesz miał kilka linii kończących się na'/r/n' (od aplikacji czasu działającej w systemie Windows), a wtedy będziesz miał wiersze kończące się właśnie '/ n' (gdy aplikacja działa na Linuksie). Może to przysporzyć kłopotów, zwłaszcza jeśli istnieje automatyczne analizowanie plików dziennika. Postanowiłem po prostu użyć '/ n'. – Sharky

+1

(2/2) Niemniej jednak przegłosowałem twoją odpowiedź tak, jak byłoby to prawdą, gdybyśmy żyli w doskonale regulowanym świecie. – Sharky

+0

Używam linuxa, ale podobało mi się to podejście, ponieważ mogę chcieć przenośności w przyszłym użytkowaniu. – sdkks