這次給大家?guī)韈onsole怎樣打印日志信息,console打印日志信息的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。
我們首先創(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?<?100;?i++)?{ ??logger.log(`log?message?${i}`); ??logger.error(`err?message?${i}`); }
在上面代碼中,我們其實是創(chuàng)建了一個console.Console類的實例,該類需要指定兩個參數(shù),即標準輸出流和標準錯誤輸出流,正常情況下,實際上是對應了process.stdout和process.stderr,以上的代碼中,我們將這兩個輸出流改為了文件輸出流,并指定為文件追加模式,這樣即可將日志信息輸出到指定的文件中去。運行上面的代碼,會生成stdout.log和stderr.log兩個文件。
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 ...
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 ...
看上去信息還比較簡單,不像是日志文件的樣子,我們或許得為每條日志添加一個時間才行,下面先為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]; ??}); }
然后再改寫前面的主文件:
//?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?<?100;?i++)?{ ??let?time?=?new?Date().format('yyyy-MM-dd?HH:mm:ss.fff'); ??logger.log(`[${time}]?-?log?message?${i}`); ??logger.error(`[${time}]?-?err?message?${i}`); }
重新運行程序,然后查看兩個日志文件的內(nèi)容。
stdout.log內(nèi)容如下:
[2018-04-27?07:30:54.309]?-?log?message?0 [2018-04-27?07:30:54.312]?-?log?message?1 [2018-04-27?07:30:54.312]?-?log?message?2 [2018-04-27?07:30:54.312]?-?log?message?3 [2018-04-27?07:30:54.312]?-?log?message?4 [2018-04-27?07:30:54.312]?-?log?message?5 [2018-04-27?07:30:54.312]?-?log?message?6 [2018-04-27?07:30:54.312]?-?log?message?7 [2018-04-27?07:30:54.312]?-?log?message?8 [2018-04-27?07:30:54.312]?-?log?message?9 [2018-04-27?07:30:54.312]?-?log?message?10 ...
stderr.log內(nèi)容如下:
[2018-04-27?07:30:54.309]?-?err?message?0 [2018-04-27?07:30:54.312]?-?err?message?1 [2018-04-27?07:30:54.312]?-?err?message?2 [2018-04-27?07:30:54.312]?-?err?message?3 [2018-04-27?07:30:54.312]?-?err?message?4 [2018-04-27?07:30:54.312]?-?err?message?5 [2018-04-27?07:30:54.312]?-?err?message?6 [2018-04-27?07:30:54.312]?-?err?message?7 [2018-04-27?07:30:54.312]?-?err?message?8 [2018-04-27?07:30:54.312]?-?err?message?9 [2018-04-27?07:30:54.312]?-?err?message?10 ...
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關注php中文網(wǎng)其它相關文章!
推薦閱讀:
? ??? ???? ?? ??? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

Nintendo? ?? ??? Switch Lite(Amazon?? ?? $189.99)? ?? ?? ??? ??????. ??? ? ??? ?? ? ????? ??? ? ????. ???? ??? ?? 2? ?? Switch Lite Hyrule Edition? ??????.

WebSocket? JavaScript: ??? ???? ??? ??? ?? ?? ?? ??: ??? ??? ??? ??? ?? ??? ???? ???? ??? ???? ?? ???? ??. ??? ????? ???? ?? ?? ? ??? WebSocket? JavaScript? ?????. ? ????? ??? ???? ????? WebSocket ? JavaScript? ??? ???? ?? ??? ???? ?? ??? ??? ?????. 1. ??? ??

JavaScript ? WebSocket: ???? ??? ?? ?? ??? ?? ??: ??? ?? ??? ???? ?? ??? ?? ??? ?? ?????. ??? ???? ?? ??? ?? ???? ????? ?????? ?? ???? ??? ? ?? ????? ??? ? ????. ? ????? JavaScript ? WebSocket ??? ???? ???? ??? ?? ?? ???? ???? ??? ?????. ? ????? ?? ?? ??? ?? ?? ????? ?????. ??

JavaScript ????: HTTP ?? ??? ?? ??, ?? ?? ??? ?????. ??: ? ????? ???? ??? ?? ??? ?? ?????. ??? ??? ? ??? HTTP ?? ??? ???? ??? ?? ??? ???? ??? ?? ??? ?? ?? ??? ???? ?? ??? ????. ? ????? JavaScript? ???? HTTP ?? ??? ?? ??? ? ?? ???? ?? ??? ?????. XMLHttpRequest ??

?? MagicX XU Mini M? ???? ????? ? ??? ??? ?? ????. ?? ??? ??? ??? ???? ? ????? ?? ??, ??? RK3562 CPU? ???? ??? ?? ?? RK3326 ????? ??? ??????.

Nintendo? ?? ?? ??? Nintendo Direct ????? ?? ??? ????? ?? ?? ??? ??? ??????. ?? ??? Switch Lite? ? ??(Amazon?? ?? $194.93)? ??????.

JavaScript?? HTTP ?? ??? ?? ?? ??: ??? ?? ???? ??? ?? ??? ??????? ?? ??? ???? ?? HTTP ?? ??? ?? ??? ?????. HTTP ?? ??? ???? ?? ?? ??????? ??? ???? ? ? ???? ? ??? ???. ? ????? JavaScript? ???? HTTP ?? ??? ?? ??? ???? ???? ?? ??? ?????. 1. HTTP ?? ??? ?????? HTTP ?? ??? ????? ??? ??? ??? ? ????

?? ?, ??? ?? ?? ??? Paul Gele? ? ??? Nintendo Switch 2? ?? ? ?? ?? AAA ??? ?? ? ???? ??????. 1?? ??? ??? ???? ?? ?? AAA ???? ?? ??? ??? ?? ????? ????. ?
