Golang中log與fmt區別


關於使用log與使用fmt的區別

最初的就是直接打印出來,之后一點點升級,比如加上輸出的時間,加上goroutine之間的並發操作(打印信息並不能一定按照你規定好的順序輸出來 每次輸出的順序可能會不同),按照不同的日志級別進行打印 。。。加上打印以及轉存,因此就需要專門的log包來記錄程序的信息。

想象一下,一個很大的項目有很多的輸出信息,要是輸出信息前面沒有加上日期的話,debug起來幾乎是難以想象的,因為不可能一直盯着屏幕來對信息進行監控。

因此采用log來代替fmt的原因主要有一下幾個方面:

  • 添加了輸出時間
  • 線程安全
  • 方便對日志信息進行轉存,形成日志文件

關於logger的基本結構,可以參考這個博客:
http://gotaly.blog.51cto.com/8861157/1406905

看logger的結構,除了基本的信息之外,還有許多其他的功能:
http://studygolang.com/articles/3383

具體理解log是線程安全的,可以參考這個博客:
http://blog.csdn.net/paladinosment/article/details/42666147

還有日志的轉存打印
創建New對象的時候,通過控制第一個參數,可以直接輸出到標准輸出上,也可以存到文件中。

如果僅僅想輸出到終端,可以直接調用log.XXX方法,不用先生成一個logger對象,再去通過logger對象來調用。在log包中,有一些methods是直接對logger的實現,有一些是直接的庫函數,可以直接使用。

http://www.sharejs.com/codes/go/7308

關於單元測試時候的t.logf
這個在內部其實還是使用類似的logs的方法,都是對基本的並行的操作進行了封裝之后再處理的,加上了mutex操作,因此在單元測試中也並不推薦直接使用fmt.printf的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM