W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
?GoFrame
?框架提供了完善的?Server
?日志管理功能,包括?access log
?以及?error log
?,推薦使用配置文件的方式統(tǒng)一配置管理。
請查看?API
?文檔:
https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#ServerConfig
日志相關(guān)配置屬性如下:
Logger *glog.Logger // Logger for server.
LogPath string // Directory for storing logging files.
LogStdout bool // Printing logging content to stdout.
ErrorStack bool // Logging stack information when error.
ErrorLogEnabled bool // Enable error logging files.
ErrorLogPattern string // Error log file pattern like: error-{Ymd}.log
AccessLogEnabled bool // Enable access logging files.
AccessLogPattern string // Error log file pattern like: access-{Ymd}.log
簡要說明:
access
?日志終端輸出是關(guān)閉的,僅有?error
?日志默認開啟。
Server.Set*
?方法設(shè)置,大部分選項可以通過?Server.Get*
?方法獲取。
Logger
?是一個自定義的日志管理對象,開發(fā)者也可以傳遞一個完整的日志管理對象,忽略其他日志選項配置。
LogPath
?屬性用于設(shè)置日志目錄,只有在設(shè)置了日志目錄的情況下才會輸出日志到日志文件中。
ErrorLogPattern
?及?AccessLogPattern
?用于配置日志文件名稱格式,默認為?error-{Ymd}.log
?及?access-{Ymd}.log
?,例如:?error-20191212.log
?, ?access-20191212.log
?。
官方推薦使用配置文件的方式來管理服務(wù)配置以及日志日志配置。 一個參考的日志配置內(nèi)容示例(以?yaml
?格式為例):
server:
LogPath: "/var/log/gf-demos/server"
LogStdout: false
ErrorStack: true
ErrorLogEnabled: true
ErrorLogPattern: "error.{Ymd}.log"
AccessLogEnabled: true
AccessLogPattern: "access.{Ymd}.log"
當(dāng)?Server
?啟動時將會自動去讀取默認配置文件?config.yaml
?中的?server
?節(jié)點配置。
日志的配置也可以通過?Server
?對象的?Set*
?方法來進行配置,
配置文件的方式比較簡單,這里不再示例說明。以下示例通過配置方法的方式進行對?Server
?進行配置。
請求日志內(nèi)容如下:
2018-04-20 18:11:57.344 200 "GET http 127.0.0.1:8199 /log/access HTTP/1.1" 0.120, 127.0.0.1, "", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"
日志格式:
請求時間(精確到毫秒) HTTP狀態(tài)碼 "請求方式 請求前綴 請求地址 請求協(xié)議" 執(zhí)行時間(毫秒) 客戶端IP "來源URL", "UserAgent"
其中,請求前綴為?http
?或者?https
?,請求協(xié)議往往為?HTTP/1.0
?或者?HTTP/1.1
?。
注意,日志中記錄的執(zhí)行時間單位為毫秒,絕大多數(shù)情況下看到的時間幾乎都是?0.xxx
?毫秒時間,也就是說執(zhí)行時間都是微秒級不到?1
?毫秒。
錯誤日志內(nèi)容如下:
2019-12-20 20:10:56.484 [ERRO] 500, "GET http 127.0.0.1:8199 /log/error HTTP/1.1" 0.210, 127.0.0.1, "", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
Stack:
1. OMG
1). main.main.func1
/Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/.example/net/ghttp/server/log/log_error.go:10
錯誤信息會打印出對應(yīng)錯誤產(chǎn)生的堆棧信息(堆棧信息中不包含框架內(nèi)部調(diào)用信息),以便于錯誤定位以及開發(fā)者分析問題原因。
?Server
?產(chǎn)生的任何?panic
?錯誤都將會被自動捕獲到錯誤日志中,因此對于業(yè)務(wù)端程序來講,無論是在控制器中、業(yè)務(wù)封裝層、數(shù)據(jù)模型中,如果產(chǎn)生了錯誤想要直接退出業(yè)務(wù)請求處理,直接?panic
?即可。
開發(fā)者可以自定義處理?Server
?的請求日志,方法有兩種:
*glog.Logger
?對象。
我們需要注意的是,這里提到的日志都是?Server
?的日志,類似于?nginx
?, ?apache
?, ?tomcat
?等等一系列?Web Server
?服務(wù)的日志,只允許?Server
?輸出內(nèi)容,開發(fā)者無法往?Server
?的日志文件中寫入日志內(nèi)容,并且日志類型和格式是完全固定的。
?GoFrame
?框架也提供了日志模塊,由?glog
?日志組件實現(xiàn),開發(fā)者通過?glog
?組件打印的日志屬于業(yè)務(wù)日志,程序業(yè)務(wù)代碼可以決定輸出什么內(nèi)容,輸出到哪里,輸出格式是什么樣等。并且常用?g.Log()
?方法來輸出業(yè)務(wù)日志,該方法支持自動讀取配置文件中的?logger
?配置項。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: