เมื่อคุณต้องการที่จะเขียนในล็อกไฟล์คือการผนวกข้อมูลไปยังจุดสิ้นสุดของแฟ้มที่ไม่เคยappendFile
ใช้งาน appendFile
เปิดตัวจัดการไฟล์สำหรับข้อมูลแต่ละชิ้นที่คุณเพิ่มลงในไฟล์หลังจากผ่านไประยะหนึ่งคุณจะได้รับEMFILE
ข้อผิดพลาดที่สวยงาม
ฉันสามารถเพิ่มที่ไม่ได้ใช้งานง่ายกว่าappendFile
WriteStream
ตัวอย่างด้วยappendFile
:
console.log(new Date().toISOString());
[...Array(10000)].forEach( function (item,index) {
fs.appendFile("append.txt", index+ "\n", function (err) {
if (err) console.log(err);
});
});
console.log(new Date().toISOString());
มากถึง 8000 บนคอมพิวเตอร์ของฉันคุณสามารถผนวกข้อมูลลงในไฟล์จากนั้นคุณจะได้รับสิ่งนี้:
{ Error: EMFILE: too many open files, open 'C:\mypath\append.txt'
at Error (native)
errno: -4066,
code: 'EMFILE',
syscall: 'open',
path: 'C:\\mypath\\append.txt' }
นอกจากนี้appendFile
จะเขียนเมื่อเปิดใช้งานดังนั้นบันทึกของคุณจะไม่ถูกเขียนโดยการประทับเวลา คุณสามารถทดสอบด้วยตัวอย่างตั้ง 1,000 แทน 100000 ลำดับจะสุ่มขึ้นอยู่กับการเข้าถึงไฟล์
หากคุณต้องการต่อท้ายไฟล์คุณต้องใช้สตรีมแบบเขียนได้ดังนี้:
var stream = fs.createWriteStream("append.txt", {flags:'a'});
console.log(new Date().toISOString());
[...Array(10000)].forEach( function (item,index) {
stream.write(index + "\n");
});
console.log(new Date().toISOString());
stream.end();
คุณจบมันเมื่อคุณต้องการ คุณไม่จำเป็นต้องใช้แม้แต่stream.end()
ตัวเลือกเริ่มต้นคือAutoClose:true
ดังนั้นไฟล์ของคุณจะสิ้นสุดเมื่อกระบวนการของคุณสิ้นสุดลงและคุณหลีกเลี่ยงการเปิดไฟล์มากเกินไป