GoFrame 高級(jí)特性-日志輸出

2022-04-02 14:00 更新

日志輸出往往是打印一些調(diào)試或者?SQL?語(yǔ)句,日志對(duì)象可以通過(guò)?SetLogger/GetLogger?方法來(lái)設(shè)置,也可以通過(guò)配置文件來(lái)做配置。以下是一個(gè)開(kāi)啟了日志輸出的配置示例:

database:
  logger:
  - path:   "/var/log/gf-app/sql"
    level:  "all"
    stdout: true
  default:
  - link:  "mysql:root:12345678@tcp(127.0.0.1:3306)/user"
    debug: true 

需要注意這里使用關(guān)鍵字?logger?作為?ORM?的日志配置項(xiàng)名稱(chēng),因此您無(wú)法使用該名字作為數(shù)據(jù)庫(kù)配置分組。

?ORM?組件輸出的日志相當(dāng)詳盡,我們來(lái)看一個(gè)示例:

2021-05-22 21:12:10.776 [DEBU] {38d45cbf2743db16f1062074f7473e5c} [  4 ms] [default] [rows:0  ] [txid:1] BEGIN
2021-05-22 21:12:10.776 [DEBU] {38d45cbf2743db16f1062074f7473e5c} [  0 ms] [default] [rows:0  ] [txid:1] SAVEPOINT `transaction0`
2021-05-22 21:12:10.789 [DEBU] {38d45cbf2743db16f1062074f7473e5c} [ 13 ms] [default] [rows:8  ] [txid:1] SHOW FULL COLUMNS FROM `user`
2021-05-22 21:12:10.790 [DEBU] {38d45cbf2743db16f1062074f7473e5c} [  1 ms] [default] [rows:1  ] [txid:1] INSERT INTO `user`(`id`,`name`) VALUES(1,'john') 
2021-05-22 21:12:10.791 [DEBU] {38d45cbf2743db16f1062074f7473e5c} [  1 ms] [default] [rows:0  ] [txid:1] ROLLBACK TO SAVEPOINT `transaction0`
2021-05-22 21:12:10.791 [DEBU] {38d45cbf2743db16f1062074f7473e5c} [  0 ms] [default] [rows:1  ] [txid:1] INSERT INTO `user`(`id`,`name`) VALUES(2,'smith') 
2021-05-22 21:12:10.792 [DEBU] {38d45cbf2743db16f1062074f7473e5c} [  1 ms] [default] [rows:0  ] [txid:1] COMMIT 

可以看到,日志包含以下幾部分信息:

  1. 日期及時(shí)間,精確到毫秒。
  2. 日志級(jí)別。因?yàn)?SQL?日志主要用于功能調(diào)試/問(wèn)題排查,生產(chǎn)環(huán)境往往需要關(guān)閉掉,因此日志級(jí)別固定為?DEBUG?級(jí)別。
  3. 當(dāng)前?SQL?執(zhí)行耗時(shí)。從客戶端發(fā)起請(qǐng)求到接收到數(shù)據(jù)的時(shí)間,單位為毫秒。當(dāng)執(zhí)行時(shí)間不足1毫秒時(shí),展示為0毫秒。
  4. 當(dāng)前?SQL?所處的數(shù)據(jù)庫(kù)配置分組,默認(rèn)為?default?。
  5. 當(dāng)前?SQL?所屬的事務(wù)ID。如果當(dāng)前SQL不屬于事務(wù)操作時(shí),不存在該字段。
  6. 具體執(zhí)行的?SQL?語(yǔ)句。需要注意的是,由于底層使用的是?SQL?預(yù)處理,這里的?SQL?語(yǔ)句是通過(guò)組件自動(dòng)拼接的結(jié)果,僅供參考。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)