[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