beego——日志处理

这是一个用来处理日志的库,它的设计思路来自于 database/sql,目前支持的引擎有 file、console、net、smtp,可以通过如下方式进行安装:

go get github.com/astaxie/beego/logs

  

通用方式

首先引入包:

import (
    "github.com/astaxie/beego/logs"
)

然后添加输出引擎(log 支持同时输出到多个引擎),这里我们以 console 为例,第一个参数是引擎名(包括:console、file、conn、smtp、es、multifile)

logs.SetLogger("console")

添加输出引擎也支持第二个参数,用来表示配置信息,详细的配置请看下面介绍:

logs.SetLogger(logs.AdapterFile,`{"filename":"project.log","level":7,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10,"color":true}`)

  

然后我们就可以在我们的逻辑中开始任意的使用了:

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

  

多个实例

一般推荐使用通用方式进行日志,但依然支持单独声明来使用独立的日志

    package main

    import (
        "github.com/astaxie/beego/logs"
    )

    func main() {
        log := logs.NewLogger()
        log.SetLogger(logs.AdapterConsole)
        log.Debug("this is a debug message")
    }

  

输出文件名和行号

日志默认不输出调用的文件名和文件行号,如果你期望输出调用的文件名和文件行号,可以如下设置

logs.EnableFuncCallDepth(true)

开启传入参数 true,关闭传入参数 false,默认是关闭的.

如果你的应用自己封装了调用 log 包,那么需要设置 SetLogFuncCallDepth,默认是 2,也就是直接调用的层级,如果你封装了多层,那么需要根据自己的需求进行调整。

logs.SetLogFuncCallDepth(3)

  

异步输出日志

为了提升性能, 可以设置异步输出:

logs.Async()

异步输出允许设置缓冲 chan 的大小

logs.Async(1e3)

  

引擎配置设置

  • console

    命令行输出,默认输出到`os.Stdout`:
    
    logs.SetLogger(logs.AdapterConsole, `{"level":1,"color":true}`)

    主要的参数如下说明:

    • level 输出的日志级别
    • color 是否开启打印日志彩色打印(需环境支持彩色输出)
  • file

    设置的例子如下所示:

    logs.SetLogger(logs.AdapterFile, `{"filename":"test.log"}`)

    主要的参数如下说明:

    • 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"]}`)

    主要的参数如下说明(除 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"}`)

    主要的参数说明如下:

    • reconnectOnMsg 是否每次链接都重新打开链接,默认是 false
    • reconnect 是否自动重新链接地址,默认是 false
    • net 发开网络链接的方式,可以使用 tcp、unix、udp 等
    • addr 网络链接的地址
    • level 日志保存的时候的级别,默认是 Trace 级别
  • smtp

    邮件发送,设置的例子如下所示:

    logs.SetLogger(logs.AdapterMail, `{"username":"[email protected]","password":"xxxxxxxx","host":"smtp.gmail.com:587","sendTos":["[email protected]"]}`)

    主要的参数说明如下:

    • 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}`)
  • 简聊

    输出到简聊:

    logs.SetLogger(logs.AdapterJianLiao, `{"authorname":"xxx","title":"beego", "webhookurl":"https://jianliao.com/xxx", "redirecturl":"https://jianliao.com/xxx","imageurl":"https://jianliao.com/xxx","level":1}`)
  • slack

    输出到slack:

    logs.SetLogger(logs.AdapterSlack, `{"webhookurl":"https://slack.com/xxx","level":1}`)

原文地址:https://www.cnblogs.com/yangmingxianshen/p/10127555.html

时间: 2024-11-13 07:58:32

beego——日志处理的相关文章

go系列(6)- beego日志模块的使用

1.安装日志模块 切换到工作目录,下载日志模块 cd /data/work/go/ go get github.com/astaxie/beego/logs 2.导入日志模块 使用的时候,需要导入模块 import ( "github.com/astaxie/beego/logs" ) 3.设置参数 输出文件名和行号,日志默认不输出调用的文件名和文件行号,如果你期望输出调用的文件名和文件行号,可以如下设置 logs.EnableFuncCallDepth(true) 开启传入参数 tr

Go 语言 应用框架 beego

beego 1.7.0 版本发布了.据腾云科技ty300.com了解beego是一个用Go语言开发的应用框架,勤快学qkxue.net觉得beego思路来自于tornado,路由设计来源于sinatra 新增改进功能:1. Filter访问速度提升7.5倍以上 #17992. Gzip压缩的时候支持不同的level #18083. ORM PK支持负数 #18104. ORM 支持自定义自增ID的值 #18265. Context 下载文件函数改进:下载文件之前先检查是否存在 #18276. l

beego框架之日志模块

参考beego开发文档:http://beego.me/docs/module/logs.md beego框架之日志模块默认支持4种记录方式: 1. 终端输出(console) :这种方式一般用在开发环境下面,方便调试. 2. 本地文件(file)       :这种方式一般用来保存常规日志,为生产环境中常用的方式. 3. 网络方式(network):这种方式可以用来将日志发送到指定服务器,一般可以用来根据日志触发事件等. 4. 发送邮件(email)   :这种方式一般是将生产环境下比较重要的

【go】脑补框架 Express beego tornado Flux reFlux React jsx jpg-ios出品

http://goexpresstravel.com/ 今天 Express 的作者 TJ Holowaychuk 发了一篇文章,正式宣告和 Node.js 拜拜了,转向 Go 语言. Go verses Node 如果你在做分布式工作,你会发现 Go 语言丰富的并发原语非常有帮助.虽然我们用 Node 的 generator 也可以做类似的事,但在我看来,generator 永远只能做一半.没有独立的栈错误处理和报告,充其量是中等.我也不想再等(Node)社区花3 年去整理(改善),尤其是我们

beego介绍

beego 简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado.sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface.struct 嵌入等)而设计的一个框架. beego 的架构 beego 的整体设计架构如下所示: beego 是基于八大独立的模块构建的,是一个高度解耦的框架.当初设计 beego 的时候就是考虑功

beego小技巧两则:通过命令行自定义端口和环境,url中带有中划线处理

1,通过命令行自定义端口和环境 先用flag提取参数,如果要环境,就反向注进去, 如果是端口,就打到beego.Run函数里去. 2,在作router里的url解析时,如果URL中含有-中划线,用严格的string是不能匹配的. 需要去掉这个string限定. package main import ( "flag" "fmt" _ "prismlogapi/routers" "github.com/astaxie/beego"

Beego开源项目 收藏

官方收藏的项目 OPMS - 是一款项目管理 + OA管理的免费开源软件.功能精简实用,满足日常的工作需求,特别适合扁平化项目和团队管理. Gopub - 基于 Git 的代码发布系统,用于发布 PHP 等脚本语言开发的项目.使用 Go 语言 和 Beego 框架开发. Webcron - 一个定时任务管理器,基于Go语言和beego框架开发.用于统一管理项目中的定时任务,提供可视化配置界面.执行日志记录.邮件通知等功能,无需依赖*unix下的crontab服务. Scheduler - 统一任

使用BEEGO建立一个基本的API框架

用BEE API命令生成框架. 然后自行更改MODELS,加入MYSQL支持ORM. 然后,自定义了字段的对应,表的名称等. 参考URL: http://www.cnblogs.com/studyzy/p/6964612.html main.go package main import ( _ "papi/routers" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ &q

Beego学习笔记——开始

beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.flask这三个框架,但是结合了Go本身的一些特性(interface.struct继承等)而设计的一个框架. beego的架构 beego的整体设计架构如下所示: beego是基于八大独立的模块之上构建的,是一个高度解耦的框架.当初设计beego的时候就是考虑功能模块化,用户即使不适用beego的ht