- 1.2 快速入门
- 1.3 集成第三方应用
- 1.4 线程安全的 Map
- 1.5 Bee Watch
- 1.6 开发团队
- 1.7 开发案例
- 1.8 API自动化文档
- 1.9 进程内监控
- 1.10 beego 高级编程
- 1.11 第三方库
- 1.12 Apache 配置
- 1.13 独立部署
- 1.14 nginx 部署
- 1.15 发行部署
- 1.16 Supervisord
- 1.17 在线聊天室
- 1.18 示例程序
- 1.19 短域名服务
- 1.20 Todo 列表
- 1.21 bee 工具简介
- 1.22 beego 的安装
- 1.23 为 beego 做贡献
- 1.24 beego 简介
- 1.26 升级指南
- 1.27 模块介绍
- 1.28 缓存模块
- 1.29 配置文件解析
- 1.30 上下文模块
- 1.31 热升级是什么?
- 1.32 客户端请求
- 1.33 国际化介绍
- 1.34 日志处理
- 1.35 特别注意
- 1.36 核心工具模块
- 1.37 beego 的 MVC 架构介绍
- 1.39 参数配置
- 1.40 控制器介绍
- 1.41 错误处理
- 1.43 flash 数据
- 1.44 JSON、XML、JSONP
- 1.45 日志处理
- 1.46 获取参数
- 1.47 路由设置
- 1.48 session 控制
- 1.49 URL 构建
- 1.51 跨站请求伪造
- 1.53 命令模式
- 1.54 Custom Fields
- 1.55 FAQ
- 1.56 模型定义
- 1.57 对象的 CRUD 操作
- 1.58 ORM 使用方法
- 1.59 模型(Models)- beego ORM
- 1.60 高级查询
- 1.61 构造查询
- 1.62 使用SQL语句进行查询
- 1.63 ORM Test
- 1.64 事务处理
- 1.66 分页处理
- 1.67 静态文件
- 1.68 模板函数
- 1.69 beego 模板语法指南
- 1.70 模板处理
- 1.71 快速入门
- 1.72 controller 逻辑
- 1.73 model 分析
- 1.74 创建项目
- 1.75 项目路由设置
- 1.76 静态文件处理
- 1.77 View 编写
- 1.80 分页
- 1.81 FAQ
- 1.50 表单验证
- 1.42 过滤器
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
1.45 日志处理
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"}`)
更多详细的日志配置请查看 日志配置
这个默认情况就会同时输出到两个地方,一个 console,一个 file,如果只想输出到文件,就需要调用删除操作:
beego.BeeLogger.DelLogger("console")
设置级别
日志的级别如上所示的代码这样分为八个级别:
LevelEmergency
LevelAlert
LevelCritical
LevelError
LevelWarning
LevelNotice
LevelInformational
LevelDebug
级别依次降低,默认全部打印,但是一般我们在部署环境,可以通过设置级别设置日志级别:
beego.SetLevel(beego.LevelInformational)
输出文件名和行号
日志默认不输出调用的文件名和文件行号,如果你期望输出调用的文件名和文件行号,可以如下设置
beego.SetLogFuncCall(true)
开启传入参数 true, 关闭传入参数 false, 默认是关闭的.
完整示例
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.")
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论