Я пытаюсь добавить данные в файл журнала с помощью 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');
});
});
});
}
javascript
node.js
newline
DaBears
источник
источник
\r\n
?Ответы:
Похоже, вы запускаете это в Windows (учитывая
H://log.txt
путь к вашему файлу).Попробуйте использовать
\r\n
вместо просто\n
.Честно говоря,
\n
нормально; вы, вероятно, просматриваете файл журнала в блокноте или в другом месте, которое не отображает символы новой строки, отличные от Windows. Попробуйте открыть его в другом средстве просмотра / редакторе (например, Wordpad).источник
Вместо этого используйте константу 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'); }); }); }); }
источник
os.EOL
вас будут строки, заканчивающиеся на/r/n
(с того момента, когда приложение работало в Windows), а затем у вас будут строки, заканчивающиеся только на/n
(когда приложение работает в Linux). Это может вызвать некоторые проблемы, особенно если используется автоматический анализ файлов журнала. Решил просто использовать/n
.fs.write
с,os.EOL
в двоичный файл. Раньше яpkg
создавал двоичный файл для Windows. При выполнении к последней записанной записи добавляется новая строка (как и ожидалось); но, похоже, другие приложения Windows относятся к этому новому рекорду. Я ищу обходной путь.используйте
\r\n
комбинацию, чтобы добавить новую строку в node jsvar stream = fs.createWriteStream("udp-stream.log", {'flags': 'a'}); stream.once('open', function(fd) { stream.write(msg+"\r\n"); });
источник