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":"beegotest@gmail.com","password":"xxxxxxxx","host":"smtp.gmail.com:587","sendTos":["xiemengjun@gmail.com"]}`)主要的参数说明如下:
- 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}`)
beego——日志处理的更多相关文章
- go系列(6)- beego日志模块的使用
1.安装日志模块 切换到工作目录,下载日志模块 cd /data/work/go/ go get github.com/astaxie/beego/logs 2.导入日志模块 使用的时候,需要导入模块 ...
- Beego框架的一条神秘日志引发的思考
公司目前的后台是用Beego框架搭的,并且为了服务的不中断升级,我们开启了Beego的Grace模块,用于热升级支持.一切都跑井然有序,直到有一天,领导甩出一些服务日志,告知程序一直报错: 2018/ ...
- Go语言之高级篇beego框架之日志收集系统
一.日志收集系统架构设计 图1 图2 二.开发环境 1.安装jdk jdk-8u51-windows-x64.exe 安装目录:C:\Program Files\jdk8 2.安装zookeeper ...
- 【go】脑补框架 Express beego tornado Flux reFlux React jsx jpg-ios出品
http://goexpresstravel.com/ 今天 Express 的作者 TJ Holowaychuk 发了一篇文章,正式宣告和 Node.js 拜拜了,转向 Go 语言. Go vers ...
- golang(2):beego 环境搭建
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46695513 转载请一定注明出处. 1,关于beego beego是一个用Go开 ...
- Beego学习笔记——Logs
日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...
- Beego学习笔记——开始
beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...
- GO开发:用go写个日志监控系统
日志收集系统架构 1.项目背景 a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 b. 当系统机器比较少时,登陆到服务器上查看即可满足 c. 当系统机器规模巨大,登陆到机器上查看几乎不现 ...
- Go实现海量日志收集系统(二)
一篇文章主要是关于整体架构以及用到的软件的一些介绍,这一篇文章是对各个软件的使用介绍,当然这里主要是关于架构中我们agent的实现用到的内容 关于zookeeper+kafka 我们需要先把两者启动, ...
随机推荐
- JAVA在语言级支持多线程
进程:任务 任务并发执行是一个宏观概念,微观上是串行的. 进程的调度是有OS负责的(有的系统为独占式,有的系统为共享式,根据重要性,进程有优先级). 由OS将时间分为若干个时间片. JAVA在语言级支 ...
- E-R图到数据库表
数据库E-R图相关 日 17:39 E-R数据模型所採用的三个主要概念是:实体集.联系集和属性 实体集:具有同样类型及同样性质(或属性)的实体集合 属性:简单属性和符合属性:单值属性和多值属性:nul ...
- Merging an upstream repository into your fork
1. Check out the branch you wish to merge to. Usually, you will merge into master. $ git checkout ma ...
- CImage类提供了GetBits()函数原理及实现
CImage类提供了GetBits()函数来读取数据区,GetBits()函数返回的是图片最后一行第一个像素的地址,网上有人说返回指针的起始位置是不同的,有些图片返回的是左上角像素的地址,有些是左下角 ...
- iOS开发之--最简单的导航按钮更换方法/导航颜色的改变
有很多时候,我们需要用到导航,那么更换导航的时候,是在那用那修改,还是自定义一个导航,或者是声明一个代理方法,经过查资料和对导航属性的一些了解,用一种方法最为简单,就是在入口类里面添加一个方法,调用偏 ...
- 第十三篇:带缓冲的IO( 标准IO库 )
前言 在之前,学习了 read write 这样的不带缓冲IO函数. 而本文将讲解标准IO库中,带缓冲的IO函数. 为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 wri ...
- Linux Kernel 4.7版本发布
导读 在经历了长达一周的惬意假日时光,大神Linus Torvalds宣布面向所有GNU/Linux操作系统发布Linux Kernel 4.7.Linux 4.7内核的研发历经2个多月,自今年5月2 ...
- Gson简要使用笔记(转载)
经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需 ...
- json写入到excel表
1. 拼接返回的json数据 // 拼接需要下载报表的HTML,并返回html;reportHtml(reporttData) { let html = `<html xmlns:o=" ...
- 170407、java基于nio工作方式的socket通信
客户端代码: /** * */ package com.bobohe.nio; import java.io.BufferedReader; import java.io.IOException; i ...