Je veux créer un système de journalisation simple, qui affiche une ligne avant la ligne précédente dans un fichier txt en utilisant Node.js, mais je ne sais pas comment fonctionne le système de fichiers de Node.js. Quelqu'un peut-il l'expliquer?
L'insertion de données au milieu d'un fichier texte n'est pas une tâche simple. Si possible, vous devriez l'ajouter à la fin de votre fichier.
Le moyen le plus simple d’ajouter des données dans un fichier texte est d’utiliser le module fs.appendFile(filename, data[, options], callback)
intégré from fs
module :
var fs = require('fs')
fs.appendFile('log.txt', 'new data', function (err) {
if (err) {
// append failed
} else {
// done
}
})
Mais si vous souhaitez écrire plusieurs fois des données dans le fichier journal, il vaut mieux utiliser fs.createWriteStream(path[, options])
fonction à la place:
var fs = require('fs')
var logger = fs.createWriteStream('log.txt', {
flags: 'a' // 'a' means appending (old data will be preserved)
})
logger.write('some data') // append string to your file
logger.write('more data') // again
logger.write('and more') // again
Node continuera à ajouter de nouvelles données à votre fichier chaque fois que vous appelez .write
, jusqu'à ce que votre application soit fermée ou jusqu'à ce que vous fermiez manuellement le flux appelant .end
:
logger.end() // close string
Étape 1
Si vous avez un petit fichierLisez toutes les données du fichier dans la mémoire
Étape 2
Convertir une chaîne de données de fichier en tableau
Étape 3
Rechercher dans le tableau pour trouver un emplacement où vous souhaitez insérer le texte
Étape 4
Une fois que vous avez l'emplacement, insérez votre texte
yourArray.splice(index,0,"new added test");
Étape 5
convertir votre tableau en chaîne
yourArray.join("");
Étape 6
écrivez votre fichier comme ça
fs.createWriteStream(yourArray);
Ce n'est pas conseillé si votre fichier est trop gros
Utilisez simplement le module fs
et quelque chose comme ceci:
fs.appendFile('server.log', 'string to append', function (err) {
if (err) return console.log(err);
console.log('Appended!');
});
J'ai créé un fichier journal qui affiche les données dans un fichier texte à l'aide du journal "Winston". Le code source est ci-dessous,
const { createLogger, format, transports } = require('winston');
var fs = require('fs')
var logger = fs.createWriteStream('Data Log.txt', {`
flags: 'a'
})
const os = require('os');
var sleep = require('system-sleep');
var endOfLine = require('os').EOL;
var t = ' ';var s = ' ';var q = ' ';
var array1=[];
var array2=[];
var array3=[];
var array4=[];
array1[0] = 78;`
array1[1] = 56;
array1[2] = 24;
array1[3] = 34;
for (var n=0;n<4;n++)
{
array2[n]=array1[n].toString();
}
for (var k=0;k<4;k++)
{
array3[k]=Buffer.from(' ');
}
for (var a=0;a<4;a++)
{
array4[a]=Buffer.from(array2[a]);
}
for (m=0;m<4;m++)
{
array4[m].copy(array3[m],0);
}
logger.write('Date'+q);
logger.write('Time'+(q+' '))
logger.write('Data 01'+t);
logger.write('Data 02'+t);
logger.write('Data 03'+t);
logger.write('Data 04'+t)
logger.write(endOfLine);
logger.write(endOfLine);
enter code here`enter code here`
}
function mydata() //user defined function
{
logger.write(datechar+s);
logger.write(timechar+s);
for ( n = 0; n < 4; n++)
{
logger.write(array3[n]);
}
logger.write(endOfLine);
}
for (;;)
}
var now = new Date();
var dateFormat = require('dateformat');
var date = dateFormat(now,"isoDate");
var time = dateFormat(now, "h:MM:ss TT ");
var datechar = date.toString();
var timechar = time.toString();
mydata();
sleep(5*1000);
}