转自:https://blog.csdn.net/huwh_/article/details/77923570
1. 使用入门
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")
1
2
3
4
5
6
7
8
2. 设置输出
我们的程序往往期望把信息输出到 log 中,现在设置输出到文件很方便,如下所示:
beego.SetLogger("file", `{"filename":"logs/test.log"}`)
1
这个默认情况就会同时输出到两个地方,一个 console,一个 file,如果只想输出到文件,就需要调用删除操作:
beego.BeeLogger.DelLogger("console")
1
3. 设置级别
LevelEmergency
LevelAlert
LevelCritical
LevelError
LevelWarning
LevelNotice
LevelInformational
LevelDebug
1
2
3
4
5
6
7
8
级别依次降低,默认全部打印,但是一般我们在部署环境,可以通过设置级别设置日志级别:
beego.SetLevel(beego.LevelInformational)
1
4. 输出文件名和行号
日志默认不输出调用的文件名和文件行号,如果你期望输出调用的文件名和文件行号,可以如下设置
beego.SetLogFuncCall(true)
1
开启传入参数 true, 关闭传入参数 false, 默认是关闭的。
5. beego/logs模块的使用
是一个用来处理日志的库,目前支持的引擎有 file、console、net、smtp,可以通过如下方式进行安装:
go get github.com/astaxie/beego/logs
1
5.1. 通用方式
首先引入包:
import ( "github.com/astaxie/beego/logs" )
1
然后添加输出引擎(log 支持同时输出到多个引擎),这里我们以 console 为例,第一个参数是引擎名(包括:console、file、conn、smtp、es、multifile)
logs.SetLogger("console")
1
添加输出引擎也支持第二个参数,用来表示配置信息,详细的配置请看下面介绍:
logs.SetLogger(logs.AdapterFile,`{"filename":"project.log","level":7,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10}`)
1
示例:
package main
import (
"github.com/astaxie/beego/logs"
)
func main() {
//an official log.Logger
l := logs.GetLogger()
l.Println("this is a message of http")
//an official log.Logger with prefix ORM
logs.GetLogger("ORM").Println("this is a message of orm")
logs.Debug("my book is bought in the year of ", 2016)
logs.Info("this %s cat is %v years old", "yellow", 3)
logs.Warn("json is a type of kv like", map[string]int{"key": 2016})
logs.Error(1024, "is a very", "good game")
logs.Critical("oh,crash")
}
1
2
3
4
5
6
7
5.2. 输出文件名和行号
日志默认不输出调用的文件名和文件行号,如果你期望输出调用的文件名和文件行号,可以如下设置
logs.EnableFuncCallDepth(true)
1
开启传入参数 true,关闭传入参数 false,默认是关闭的.
如果你的应用自己封装了调用 log 包,那么需要设置 SetLogFuncCallDepth,默认是 2,也就是直接调用的层级,如果你封装了多层,那么需要根据自己的需求进行调整.
logs.SetLogFuncCallDepth(3)
1
5.3. 异步输出日志
为了提升性能, 可以设置异步输出:
logs.Async()
1
异步输出允许设置缓冲 chan 的大小
logs.Async(1e3)
1
5.4. 引擎配置
console
可以设置输出的级别,或者不设置保持默认,默认输出到 os.Stdout:
logs.SetLogger(logs.AdapterConsole, `{"level":1}`)
1
file
设置的例子如下所示:
logs.SetLogger(logs.AdapterFile, `{"filename":"test.log"}`)
1
主要的参数如下说明:
filename 保存的文件名
maxlines 每个文件保存的最大行数,默认值 1000000
maxsize 每个文件保存的最大尺寸,默认值是 1 << 28, //256 MB
daily 是否按照每天 logrotate,默认是 true
maxdays 文件最多保存多少天,默认保存 7 天
rotate 是否开启 logrotate,默认是 true
level 日志保存的时候的级别,默认是 Trace 级别
perm 日志文件权限
multifile
设置的例子如下所示:
logs.SetLogger(logs.AdapterMultiFile, ``{"filename":"test.log","separate":["emergency", "alert", "critical", "error", "warning", "notice", "info", "debug"]}``)
1
主要的参数如下说明(除 separate 外,均与file相同):
filename 保存的文件名
maxlines 每个文件保存的最大行数,默认值 1000000
maxsize 每个文件保存的最大尺寸,默认值是 1 << 28, //256 MB
daily 是否按照每天 logrotate,默认是 true
maxdays 文件最多保存多少天,默认保存 7 天
rotate 是否开启 logrotate,默认是 true
level 日志保存的时候的级别,默认是 Trace 级别
perm 日志文件权限
separate 需要单独写入文件的日志级别,设置后命名类似 test.error.log
conn
网络输出,设置的例子如下所示:
logs.SetLogger(logs.AdapterConn, `{"net":"tcp","addr":":7020"}`)
1
主要的参数说明如下:
reconnectOnMsg 是否每次链接都重新打开链接,默认是 false
reconnect 是否自动重新链接地址,默认是 false
net 发开网络链接的方式,可以使用 tcp、unix、udp 等
addr 网络链接的地址
level 日志保存的时候的级别,默认是 Trace 级别
smtp
邮件发送,设置的例子如下所示:
logs.SetLogger(logs.AdapterMail, `{"username":"beegotest@gmail.com","password":"xxxxxxxx","host":"smtp.gmail.com:587","sendTos":["xiemengjun@gmail.com"]}`)
1
主要的参数说明如下:
username smtp 验证的用户名
password smtp 验证密码
host 发送的邮箱地址
sendTos 邮件需要发送的人,支持多个
subject 发送邮件的标题,默认是 Diagnostic message from server
level 日志发送的级别,默认是 Trace 级别
ElasticSearch
输出到 ElasticSearch:
logs.SetLogger(logs.AdapterEs, `{"dsn":"http://localhost:9200/","level":1}`
1
分享到:
相关推荐
beelogs是beego日志的升级版本! beelogs添加了一些方法,例如Rest(),GoOn(),StealOne()... 如何安装? go get github.com/henrylee2cn/beelogs 支持哪些适配器? 到目前为止,此日志支持控制台,文件,...
在本项目中,我们主要探讨的是使用Go语言和beego框架来开发一个API,该API主要用于处理日志队列消费。beego是一个流行的Go语言Web应用框架,它提供了丰富的功能和简洁的API,使得开发过程更为高效。我们将利用beego...
beego支持自定义中间件,可以用于日志记录、权限验证、缓存处理等多种场景。中间件的执行顺序由注册的顺序决定,这为实现复杂的业务逻辑提供了便利。 8. **错误处理** beego提供了内置的错误处理机制,通过`this....
6. 内置模块:Beego框架内置了多个功能强大的模块,例如Session管理、缓存操作、日志记录、配置解析、性能监控、上下文操作、ORM模块、请求模拟等,这些模块使得开发者可以快速实现各种复杂功能。 7. 热编译和热...
此外,Beego 还提供了一系列中间件,比如日志记录、GZIP 压缩、CORS 跨域支持等,这些中间件可以方便地添加到请求处理链中,增强应用程序的功能。 总之,Beego 官方学习参考资料是一份全面的指南,涵盖了从框架基础...
- **可扩展性**:除了HTTP逻辑外,beego的独立模块还可以被单独使用,如缓存(cache)、日志(logs)、配置(config)等模块。 - **执行逻辑** - 基于典型的MVC(Model-View-Controller)架构,实现从前端请求到后台处理...
beego的设计思想是模块化,它由八个独立的模块构成,这些模块高度解耦,允许开发者独立使用,比如cache模块用于实现缓存逻辑,日志模块用于记录操作信息,以及config模块用于解析各种格式的配置文件等。这种设计使得...
中间件是beego处理请求链的关键组件,它们可以添加额外的功能,如日志记录、身份验证、限速等。你可以自定义中间件,也可以使用beego提供的内置中间件,通过链式调用进行组合。 8. **API开发** beego非常适合构建...
7. **错误处理和日志**:Beego提供了内置的错误处理和日志记录机制。可以使用`this.Abort("404")`返回指定错误码,`beego.BeeLogger`则用于记录应用程序的运行日志。 8. **国际化(i18n)**:Beego支持多语言环境,...
Beego基于MVC(Model-View-Controller)架构模式,它提供了丰富的中间件支持,如路由管理、日志记录、缓存处理等,使得Go语言开发Web应用变得更加便捷。Beego的核心理念是让开发者能用Go语言的思维方式编写Web应用,...
中间件可以理解为在处理请求和响应之间插入的一系列功能,如日志记录、认证、权限控制等。 在【beego写的blog】中,开发者可能已经实现了用户登录、注册、文章发布、评论等功能。这些功能的实现依赖于beego的数据...
Beego提供了丰富的中间件支持,如日志记录、路由管理、缓存处理等,使得开发者能够快速构建出高性能的Web应用。它内置ORM(对象关系映射)系统,可以方便地进行数据库操作,支持多种数据库类型,如MySQL、PostgreSQL...
Beego作为一个成熟的Web框架,往往需要一系列的依赖包来支持其功能,如ORM(对象关系映射)、日志处理、中间件、模板引擎等。这些依赖包是构建基于Beego的应用时必不可少的部分,它们能够帮助开发者快速地搭建和扩展...
5. **中间件支持**:可以自定义中间件,实现如登录检查、日志记录等功能。 6. **RESTful API设计**:支持创建符合REST原则的API,方便前后端分离的开发模式。 7. **命令行工具**:提供了方便的命令行工具,用于快速...
3. **中间件**:Beego支持自定义中间件,可以实现日志记录、访问控制、性能优化等功能。 4. **性能优化**:由于Go语言的并发特性,Beego能够充分利用多核CPU,提供高性能的服务。 5. **错误处理**:提供了优雅的错误...
4. **中间件**:Beego支持自定义中间件,可以用来处理如用户验证、日志记录、性能监控等功能,提高代码的复用性和安全性。 5. **错误处理与日志**:良好的错误处理和日志记录是任何项目的基础。Beego提供了错误处理...
- **中间件**: 中间件提供了一种拦截请求和响应的方法,用于执行如日志记录、权限验证等操作。 ### 3. beego 源码分析 通过查看 `beego` 源码,我们可以了解到其内部的实现细节,包括路由匹配算法、控制器调度机制...
Beego 的中间件系统允许开发者插入自定义的处理逻辑,比如日志记录、GZIP 压缩、权限验证等。这些中间件可以在请求处理流程中按需执行,提高代码复用性。 6. **热加载** Beego 提供了热加载功能,开发者在修改...
错误处理和日志记录也是Beego的重要特性。Beego提供了一套内置的异常处理机制,可以在出现错误时返回合适的HTTP状态码。同时,通过`log`包,可以方便地记录应用运行过程中的信息。 此外,Beego还支持中间件,允许...
【beego简单项目 适用于初学者】 beego是一款基于Go语言的高性能Web框架,它为开发者提供了快速构建Web应用的能力,特别适合初学者入门。这个项目包含了一些基础的beego模块,是学习和理解beego框架的良好起点。 ...