日志库 winston 的学习笔记 - logger.info 的实现原理单步调试
按照這篇文章日志庫 winston 的學習筆記 - 創建一個使用 winston 的 Node.js 應用里的代碼,對下列方法進行單步調試:
因為我們調用的是 info 方法,所以生成的日志,level 為 info:
第一個參數為 message,后面的都是 meta 信息:
在 info 的實現代碼里,首先判斷傳入 log 方法的參數個數:
如果參數個數為 0 或者 1,有專門的實現。否則,進入 self.log:
構造 info 對象:
其中 msg 變量存儲的是用戶調用 info 方法傳入的第一個參數,meta 是傳遞的第二個參數。
最后調用內部的 write 方法,傳入的 message,是兩個參數的連接。
encoding 是 utf8
chunk:
write 里面先 read,然后再 _transform:
format 我們選擇的是 json format:
json.js 負責把 info 對象序列化成 json 字符串:
結果:
addChunk:
emit:
三個 listeners:
data listener:
這里面看到了應用開發人員指定的 combined.log:
writeOrBuffer:
_write 的注釋:Writes the info object to our transport instance.
好多遞歸操作:
準備投遞到 fs stream 來寫了:
文件 transport 的寫入邏輯:
這是 fs 的 native 實現了:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的日志库 winston 的学习笔记 - logger.info 的实现原理单步调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用API接入更安全,OpenAI称不会使
- 下一篇: 位、字节、半字、字、内存位宽