[TOC]
# 日志处理
beego 之前介绍的时候说过是基于几个模块搭建的,beego 的日志处理是基于 logs 模块搭建的,内置了一个变量 `BeeLogger`,默认已经是 `logs.BeeLogger` 类型,初始化了 console,也就是默认输出到 `console`。
## 使用入门
一般在程序中我们使用如下的方式进行输出:
beego.Emergency("this is emergency")
beego.Alert("this is alert")
beego.Critical("this is critical")
beego.Error("this is error")
beego.Warning("this is warning")
beego.Notice("this is notice")
beego.Informational("this is informational")
beego.Debug("this is debug")
## 设置输出
我们的程序往往期望把信息输出到 log 中,现在设置输出到文件很方便,如下所示:
beego.SetLogger("file", `{"filename":"logs/test.log"}`)
更多详细的日志配置请查看 [日志配置](../../module/logs.md)
这个默认情况就会同时输出到两个地方,一个 console,一个 file,如果只想输出到文件,就需要调用删除操作:
beego.BeeLogger.DelLogger("console")
## 设置级别
日志的级别如上所示的代码这样分为八个级别:
LevelEmergency
LevelAlert
LevelCritical
LevelError
LevelWarning
LevelNotice
LevelInformational
LevelDebug
级别依次降低,默认全部打印,但是一般我们在部署环境,可以通过设置级别设置日志级别:
beego.SetLevel(beego.LevelInformational)
## 输出文件名和行号
日志默认不输出调用的文件名和文件行号,如果你期望输出调用的文件名和文件行号,可以如下设置
beego.SetLogFuncCall(true)
开启传入参数true,关闭传入参数false,默认是关闭的.
## 完整示例
```go
func internalCalculationFunc(x, y int) (result int, err error) {
beego.Debug("calculating z. x:", x, " y:", y)
z := y
switch {
case x == 3:
beego.Debug("x == 3")
panic("Failure.")
case y == 1:
beego.Debug("y == 1")
return 0, errors.New("Error!")
case y == 2:
beego.Debug("y == 2")
z = x
default:
beego.Debug("default")
z += x
}
retVal := z - 3
beego.Debug("Returning ", retVal)
return retVal, nil
}
func processInput(input inputData) {
defer func() {
if r := recover(); r != nil {
beego.Error("Unexpected error occurred: ", r)
outputs <- outputData{result: 0, error: true}
}
}()
beego.Informational("Received input signal. x:", input.x, " y:", input.y)
res, err := internalCalculationFunc(input.x, input.y)
if err != nil {
beego.Warning("Error in calculation:", err.Error())
}
beego.Informational("Returning result: ", res, " error: ", err)
outputs <- outputData{result: res, error: err != nil}
}
func main() {
inputs = make(chan inputData)
outputs = make(chan outputData)
criticalChan = make(chan int)
beego.Informational("App started.")
go consumeResults(outputs)
beego.Informational("Started receiving results.")
go generateInputs(inputs)
beego.Informational("Started sending signals.")
for {
select {
case input := <-inputs:
processInput(input)
case <-criticalChan:
beego.Critical("Caught value from criticalChan: Go shut down.")
panic("Shut down due to critical fault.")
}
}
}
```
- 写在前面的话
- 第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