[TOC]
# 日志處理
這是一個用來處理日志的庫,它的設計思路來自于 `database/sql`,目前支持的引擎有 file、console、net、smtp,可以通過如下方式進行安裝:
go get github.com/astaxie/beego/logs
## 如何使用
首先引入包:
import (
"github.com/astaxie/beego/logs"
)
然后初始化 log 變量(10000 表示緩存的大小):
log := logs.NewLogger(10000)
然后添加輸出引擎(log 支持同時輸出到多個引擎),這里我們以 console 為例,第一個參數是引擎名(包括:console、file、conn、smtp),第二個參數表示配置信息,詳細的配置請看下面介紹:
log.SetLogger("console", "")
然后我們就可以在我們的邏輯中開始任意的使用了:
log.Trace("trace %s %s","param1","param2")
log.Debug("debug")
log.Info("info")
log.Warn("warning")
log.Error("error")
log.Critical("critical")
## 輸出文件名和行號
日志默認不輸出調用的文件名和文件行號,如果你期望輸出調用的文件名和文件行號,可以如下設置
log.EnableFuncCallDepth(true)
開啟傳入參數true,關閉傳入參數false,默認是關閉的.
如果你的應用自己封裝了調用log包,那么需要設置SetLogFuncCallDepth,默認是2,也就是直接調用的層級,如果你封裝了多層,那么需要根據自己的需求進行調整.
log.SetLogFuncCallDepth(3)
## 異步輸出日志
為了提升性能, 可以設置異步輸出:
log.Async()
## 引擎配置設置
- console
可以設置輸出的級別,或者不設置保持默認,默認輸出到 `os.Stdout`:
log := NewLogger(10000)
log.SetLogger("console", `{"level":1}`)
- file
設置的例子如下所示:
log := NewLogger(10000)
log.SetLogger("file", `{"filename":"test.log"}`)
主要的參數如下說明:
- filename 保存的文件名
- maxlines 每個文件保存的最大行數,默認值 1000000
- maxsize 每個文件保存的最大尺寸,默認值是 1 << 28, //256 MB
- daily 是否按照每天 logrotate,默認是 true
- maxdays 文件最多保存多少天,默認保存 7 天
- rotate 是否開啟 logrotate,默認是 true
- level 日志保存的時候的級別,默認是 Trace 級別
- perm: 日志文件權限
- conn
網絡輸出,設置的例子如下所示:
log := NewLogger(1000)
log.SetLogger("conn", `{"net":"tcp","addr":":7020"}`)
主要的參數說明如下:
- reconnectOnMsg 是否每次鏈接都重新打開鏈接,默認是 false
- reconnect 是否自動重新鏈接地址,默認是 false
- net 發開網絡鏈接的方式,可以使用 tcp、unix、udp 等
- addr 網絡鏈接的地址
- level 日志保存的時候的級別,默認是 Trace 級別
- smtp
郵件發送,設置的例子如下所示:
log := NewLogger(10000)
log.SetLogger("smtp", `{"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:
log := NewLogger(10000)
log.SetLogger("es", `{"dsn":"http://localhost:9200/","level":1}`)
- 寫在前面的話
- 第0章 beego 簡介
- 0.1 為beego貢獻
- 0.2 發布版本
- 0.3 升級指南
- 第1章 安裝升級
- 1.1 bee工具的使用
- 第2章 快速入門
- 2.1 新建項目
- 2.2 路由設置
- 2.3 Controller運行機制
- 2.4 Model邏輯
- 2.5 View編寫
- 2.6 靜態文件處理
- 第3章 beego的MVC架構
- 3.1 Model設計
- 3.1.1 概述
- 3.1.2 ORM使用
- 3.1.3 CRUD操作
- 3.1.4 高級查詢
- 3.1.5 原生SQL查詢
- 3.1.6 構造查詢
- 3.1.7 事物處理
- 3.1.8 模型定義
- 3.1.9 命令模式
- 3.1.10 測試用例
- 3.1.11 自定義字段
- 3.1.12 FAQ
- 3.2 View設計
- 3.2.1 模板語法指南
- 3.2.2 模板處理
- 3.2.3 模板函數
- 3.2.4 靜態文件處理
- 3.2.5 模板分頁處理
- 3.3 Controller設計
- 3.3.1 參數配置
- 3.3.2 路由設置
- 3.3.3 控制器函數
- 3.3.4 XSRF過濾
- 3.3.5 請求數據處理
- 3.3.6 session 控制
- 3.3.7 過濾器
- 3.3.8 flash 數據
- 3.3.9 URL構建
- 3.3.10 多種格式數據輸出
- 3.3.11 表單數據驗證
- 3.3.12 錯誤處理
- 3.3.13 日志處理
- 第4章 beego的模塊設計
- 4.1 session 模塊
- 4.2 grace 模塊
- 4.3 cache 模塊
- 4.4 logs 模塊
- 4.5 httplib 模塊
- 4.6 context 模塊
- 4.7 toolbox 模塊
- 4.8 config 模塊
- 4.9 i18n 模塊
- 第5章 beego高級編程
- 5.1 進程內監控
- 5.2 API自動化文檔
- 第6章 應用部署
- 6.1 獨立部署
- 6.2 Supervisor部署
- 6.3 Nginx 部署
- 6.4 Apache 部署
- 第7章 第三方庫
- 第8章 應用例子
- 8.1 在線聊天室
- 8.2 短域名服務
- 8.3 Todo列表
- 第9章 FAQ