# 日志處理
這是一個用來處理日志的庫,它的設計思路來自于 `database/sql`,目前支持的引擎有 file、console、net、smtp,可以通過如下方式進行安裝:
go get github.com/astaxie/beego/logs
## 如何使用
### 通用方式
首先引入包:
import (
"github.com/astaxie/beego/logs"
)
然后添加輸出引擎(log 支持同時輸出到多個引擎),這里我們以 console 為例,第一個參數是引擎名(包括:console、file、conn、smtp、es、multifile)
logs.SetLogger("console")
添加輸出引擎也支持第二個參數,用來表示配置信息,詳細的配置請看下面介紹:
logs.SetLogger(logs.AdapterFile,`{"filename":"project.log","level":7,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10,"color":true}`)
然后我們就可以在我們的邏輯中開始任意的使用了:
package main
import (
"github.com/astaxie/beego/logs"
)
func main() {
//an official log.Logger
l := logs.GetLogger()
l.Println("this is a message of http")
//an official log.Logger with prefix ORM
logs.GetLogger("ORM").Println("this is a message of orm")
logs.Debug("my book is bought in the year of ", 2016)
logs.Info("this %s cat is %v years old", "yellow", 3)
logs.Warn("json is a type of kv like", map[string]int{"key": 2016})
logs.Error(1024, "is a very", "good game")
logs.Critical("oh,crash")
}
### 多個實例
一般推薦使用通用方式進行日志,但依然支持單獨聲明來使用獨立的日志
package main
import (
"github.com/astaxie/beego/logs"
)
func main() {
log := logs.NewLogger()
log.SetLogger(logs.AdapterConsole)
log.Debug("this is a debug message")
}
## 輸出文件名和行號
日志默認不輸出調用的文件名和文件行號,如果你期望輸出調用的文件名和文件行號,可以如下設置
logs.EnableFuncCallDepth(true)
開啟傳入參數 true,關閉傳入參數 false,默認是關閉的.
如果你的應用自己封裝了調用 log 包,那么需要設置 SetLogFuncCallDepth,默認是 2,也就是直接調用的層級,如果你封裝了多層,那么需要根據自己的需求進行調整.
logs.SetLogFuncCallDepth(3)
## 異步輸出日志
為了提升性能, 可以設置異步輸出:
logs.Async()
異步輸出允許設置緩沖 chan 的大小
logs.Async(1e3)
## 引擎配置設置
- console
命令行輸出,默認輸出到`os.Stdout`:
logs.SetLogger(logs.AdapterConsole, `{"level":1,"color":true}`)
主要的參數如下說明:
- level 輸出的日志級別
- color 是否開啟打印日志彩色打印(需環境支持彩色輸出)
- file
設置的例子如下所示:
logs.SetLogger(logs.AdapterFile, `{"filename":"test.log"}`)
主要的參數如下說明:
- filename 保存的文件名
- maxlines 每個文件保存的最大行數,默認值 1000000
- maxsize 每個文件保存的最大尺寸,默認值是 1 << 28, //256 MB
- daily 是否按照每天 logrotate,默認是 true
- maxdays 文件最多保存多少天,默認保存 7 天
- rotate 是否開啟 logrotate,默認是 true
- level 日志保存的時候的級別,默認是 Trace 級別
- perm 日志文件權限
- multifile
設置的例子如下所示:
logs.SetLogger(logs.AdapterMultiFile, `{"filename":"test.log","separate":["emergency", "alert", "critical", "error", "warning", "notice", "info", "debug"]}`)
主要的參數如下說明(除 separate 外,均與file相同):
- filename 保存的文件名
- maxlines 每個文件保存的最大行數,默認值 1000000
- maxsize 每個文件保存的最大尺寸,默認值是 1 << 28, //256 MB
- daily 是否按照每天 logrotate,默認是 true
- maxdays 文件最多保存多少天,默認保存 7 天
- rotate 是否開啟 logrotate,默認是 true
- level 日志保存的時候的級別,默認是 Trace 級別
- perm 日志文件權限
- separate 需要單獨寫入文件的日志級別,設置后命名類似 test.error.log
- conn
網絡輸出,設置的例子如下所示:
logs.SetLogger(logs.AdapterConn, `{"net":"tcp","addr":":7020"}`)
主要的參數說明如下:
- reconnectOnMsg 是否每次鏈接都重新打開鏈接,默認是 false
- reconnect 是否自動重新鏈接地址,默認是 false
- net 發開網絡鏈接的方式,可以使用 tcp、unix、udp 等
- addr 網絡鏈接的地址
- level 日志保存的時候的級別,默認是 Trace 級別
- smtp
郵件發送,設置的例子如下所示:
logs.SetLogger(logs.AdapterMail, `{"username":"beegotest@gmail.com","password":"xxxxxxxx","host":"smtp.gmail.com:587","sendTos":["xiemengjun@gmail.com"]}`)
主要的參數說明如下:
- username smtp 驗證的用戶名
- password smtp 驗證密碼
- host 發送的郵箱地址
- sendTos 郵件需要發送的人,支持多個
- subject 發送郵件的標題,默認是 `Diagnostic message from server`
- level 日志發送的級別,默認是 Trace 級別
- ElasticSearch
輸出到 ElasticSearch:
logs.SetLogger(logs.AdapterEs, `{"dsn":"http://localhost:9200/","level":1}`)
- 簡聊
輸出到簡聊:
logs.SetLogger(logs.AdapterJianLiao, `{"authorname":"xxx","title":"beego", "webhookurl":"https://jianliao.com/xxx", "redirecturl":"https://jianliao.com/xxx","imageurl":"https://jianliao.com/xxx","level":1}`)
- slack
輸出到slack:
logs.SetLogger(logs.AdapterSlack, `{"webhookurl":"https://slack.com/xxx","level":1}`)
- beego簡介
- 為 beego 貢獻
- 發布版本
- 升級指南
- beego安裝升級
- Bee 工具的使用
- 快速入門
- 新建項目
- 路由設置
- Controller 運行機制
- model 邏輯
- view 編寫
- 靜態文件處理
- beego 的 MVC 架構介紹
- controller 設計
- 參數配置
- 路由設置
- 控制器函數
- XSRF 過濾
- 請求數據處理
- session 控制
- 過濾器
- flash 數據
- URL構建
- 多種格式數據輸出
- 表單數據驗證
- 錯誤處理
- 日志處理
- model設計
- 概述
- ORM 使用
- CRUD 操作
- 高級查詢
- 原生 SQL 查詢
- 構造查詢
- 事務處理
- 模型定義
- 命令模式
- 測試用例
- 自定義字段
- FAQ
- view 設計
- 模板語法指南
- 模板處理
- 模板函數
- 靜態文件處理
- 模板分頁處理
- beego 的模塊設計
- session 模塊
- grace 模塊
- cache 模塊
- logs 模塊
- httplib 模塊
- context 模塊
- toolbox 模塊
- config 模塊
- i18n 模塊
- beego 高級編程
- 進程內監控
- API 自動化文檔
- 應用部署
- 獨立部署
- supervisor 部署
- Nginx 部署
- apache 部署
- beego 第三方庫
- 應用例子
- 在線聊天室
- 短域名服務
- Todo 列表
- beego實用庫
- 驗證碼
- 分頁
- FAQ