博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
beego——日志处理
阅读量:5068 次
发布时间:2019-06-12

本文共 2584 字,大约阅读时间需要 8 分钟。

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")

  

设置级别

日志的级别分为八个:

LevelEmergencyLevelAlertLevelCriticalLevelErrorLevelWarningLevelNoticeLevelInformationalLevelDebug

级别依次降低,默认全部打印,但是一般我们在部署环境,可以通过设置界别设置日志级别:

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.")        }    }}

  

转载于:https://www.cnblogs.com/yangmingxianshen/p/10122401.html

你可能感兴趣的文章
结对开发四~~
查看>>
关于多用户下自动编号的问题
查看>>
只显示重复数据,或不显示重复数据
查看>>
curl 命令详解
查看>>
javascript 对象简单介绍(一)
查看>>
linux正则表达式回忆记录
查看>>
Response.Buffer = True
查看>>
有趣的python range()函数
查看>>
webpack执行命令失败之解决办法
查看>>
理解Mapreduce
查看>>
C语言的变量的作用域和生存期
查看>>
NIS & Kerberos配置
查看>>
【转】非常好的Java反射例子
查看>>
安装clamav对centos系统进行病毒查杀
查看>>
poj3744 Scout YYF I
查看>>
常用Flex 布局归置 》仅做笔记 (scss)
查看>>
Qt-Qml-隐藏标题栏-程序依附任务栏
查看>>
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
查看>>
前端技术——bootstrap
查看>>
IGMP相关
查看>>