這次給大家?guī)韈onsole怎樣打印日志信息,console打印日志信息的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。愛掏網(wǎng) - it200.com
我們首先創(chuàng)建如下文件:
//?index.js let?fs?=?require('fs'); let?options?=?{ ??flags:?'a',?????//?append模式 ??encoding:?'utf8',??//?utf8編碼 }; let?stdout?=?fs.createWriteStream('./stdout.log',?options); let?stderr?=?fs.createWriteStream('./stderr.log',?options); //?創(chuàng)建logger let?logger?=?new?console.Console(stdout,?stderr); for?(let?i?=?0;?i?登錄后復(fù)制
在上面代碼中,我們其實是創(chuàng)建了一個console.Console類的實例,該類需要指定兩個參數(shù),即標(biāo)準(zhǔn)輸出流和標(biāo)準(zhǔn)錯誤輸出流,正常情況下,實際上是對應(yīng)了process.stdout和process.stderr,以上的代碼中,我們將這兩個輸出流改為了文件輸出流,并指定為文件追加模式,這樣即可將日志信息輸出到指定的文件中去。愛掏網(wǎng) - it200.com運行上面的代碼,會生成stdout.log和stderr.log兩個文件。愛掏網(wǎng) - it200.com
stdout.log文件內(nèi)容如下:
log?message?0 log?message?1 log?message?2 log?message?3 log?message?4 log?message?5 log?message?6 log?message?7 log?message?8 log?message?9 log?message?10 ...登錄后復(fù)制
stderr.log文件內(nèi)容如下:
err?message?0 err?message?1 err?message?2 err?message?3 err?message?4 err?message?5 err?message?6 err?message?7 err?message?8 err?message?9 err?message?10 ...登錄后復(fù)制
看上去信息還比較簡單,不像是日志文件的樣子,我們或許得為每條日志添加一個時間才行,下面先為Date對象添加一個format的原型方法:
//?添加format方法 Date.prototype.format?=?function?(format)?{ ??if?(!format)?{ ????format?=?'yyyy-MM-dd?HH:mm:ss'; ??} ?? ??//?用0補齊指定位數(shù) ??let?padNum?=?function?(value,?digits)?{ ????return?Array(digits?-?value.toString().length?+?1).join('0')?+?value; ??}; ??//?指定格式字符 ??let?cfg?=?{ ????yyyy:?this.getFullYear(),?????????????//?年 ????MM:?padNum(this.getMonth()?+?1,?2),????????//?月 ????dd:?padNum(this.getDate(),?2),???????????//?日 ????HH:?padNum(this.getHours(),?2),??????????//?時 ????mm:?padNum(this.getMinutes(),?2),?????????//?分 ????ss:?padNum(this.getSeconds(),?2),?????????//?秒 ????fff:?padNum(this.getMilliseconds(),?3),??????//?毫秒 ??}; ??return?format.replace(/([a-z]|[A-Z])(\1)*/ig,?function?(m)?{ ????return?cfg[m]; ??}); }登錄后復(fù)制
然后再改寫前面的主文件:
//?index.js let?fs?=?require('fs'); let?options?=?{ ??flags:?'a',?????//?append模式 ??encoding:?'utf8',??//?utf8編碼 }; let?stdout?=?fs.createWriteStream('./stdout.log',?options); let?stderr?=?fs.createWriteStream('./stderr.log',?options); //?創(chuàng)建logger let?logger?=?new?console.Console(stdout,?stderr); //?添加format方法 Date.prototype.format?=?function?(format)?{ ??if?(!format)?{ ????format?=?'yyyy-MM-dd?HH:mm:ss'; ??} ?? ??//?用0補齊指定位數(shù) ??let?padNum?=?function?(value,?digits)?{ ????return?Array(digits?-?value.toString().length?+?1).join('0')?+?value; ??}; ??//?指定格式字符 ??let?cfg?=?{ ????yyyy:?this.getFullYear(),?????????????//?年 ????MM:?padNum(this.getMonth()?+?1,?2),????????//?月 ????dd:?padNum(this.getDate(),?2),???????????//?日 ????HH:?padNum(this.getHours(),?2),??????????//?時 ????mm:?padNum(this.getMinutes(),?2),?????????//?分 ????ss:?padNum(this.getSeconds(),?2),?????????//?秒 ????fff:?padNum(this.getMilliseconds(),?3),??????//?毫秒 ??}; ??return?format.replace(/([a-z]|[A-Z])(\1)*/ig,?function?(m)?{ ????return?cfg[m]; ??}); } for?(let?i?=?0;?i?登錄后復(fù)制
重新運行程序,然后查看兩個日志文件的內(nèi)容。愛掏網(wǎng) - it200.com
stdout.log內(nèi)容如下:
[2024-04-27?07:30:54.309]?-?log?message?0 [2024-04-27?07:30:54.312]?-?log?message?1 [2024-04-27?07:30:54.312]?-?log?message?2 [2024-04-27?07:30:54.312]?-?log?message?3 [2024-04-27?07:30:54.312]?-?log?message?4 [2024-04-27?07:30:54.312]?-?log?message?5 [2024-04-27?07:30:54.312]?-?log?message?6 [2024-04-27?07:30:54.312]?-?log?message?7 [2024-04-27?07:30:54.312]?-?log?message?8 [2024-04-27?07:30:54.312]?-?log?message?9 [2024-04-27?07:30:54.312]?-?log?message?10 ...登錄后復(fù)制
stderr.log內(nèi)容如下:
[2024-04-27?07:30:54.309]?-?err?message?0 [2024-04-27?07:30:54.312]?-?err?message?1 [2024-04-27?07:30:54.312]?-?err?message?2 [2024-04-27?07:30:54.312]?-?err?message?3 [2024-04-27?07:30:54.312]?-?err?message?4 [2024-04-27?07:30:54.312]?-?err?message?5 [2024-04-27?07:30:54.312]?-?err?message?6 [2024-04-27?07:30:54.312]?-?err?message?7 [2024-04-27?07:30:54.312]?-?err?message?8 [2024-04-27?07:30:54.312]?-?err?message?9 [2024-04-27?07:30:54.312]?-?err?message?10 ...登錄后復(fù)制
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注愛掏網(wǎng) - it200.com其它相關(guān)文章!
推薦閱讀:
utils.js使用案例詳解
使用JS怎樣實現(xiàn)最簡單的跨域
以上就是console怎樣打印日志信息的詳細(xì)內(nèi)容,更多請關(guān)注愛掏網(wǎng) - it200.com其它相關(guān)文章!