新聞中心
?GOFrame?框架提供了完善的?Server?日志管理功能,包括?access log?以及?error log?,推薦使用配置文件的方式統(tǒng)一配置管理。

成都創(chuàng)新互聯(lián)服務(wù)項目包括襄州網(wǎng)站建設(shè)、襄州網(wǎng)站制作、襄州網(wǎng)頁制作以及襄州網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,襄州網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到襄州省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
日志配置
配置對象
請查看?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?。 - 其他配置選項說明請參考注釋和API文檔。
配置文件
官方推薦使用配置文件的方式來管理服務(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?對象。 - 可以通過中間件來統(tǒng)一捕獲處理。
Server日志與業(yè)務(wù)日志
我們需要注意的是,這里提到的日志都是?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?配置項。
名稱欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame高級特性-服務(wù)日志管理
當(dāng)前路徑:http://fisionsoft.com.cn/article/dhdjshj.html


咨詢
建站咨詢
