logrus_hook.go
package logrus_hook
import (
"runtime"
"strings"
"path/filepath"
log "github.com/Sirupsen/logrus"
)
type ContextHook struct {
}
func (hook ContextHook)Levels() []log.Level {
return log.AllLevels
}
func (hook ContextHook)Fire(entry *log.Entry) error {
pc := make([]uintptr, 10)
//表示自身栈中跳过6个栈帧数 并且把栈中剩余信息写入pc中。
//0表示Callers自身的调用栈,1表示Callers所在的调用栈
runtime.Callers(6, pc)
//
frames := runtime.CallersFrames(pc)
frame, _ := frames.Next()
funcName := frame.Func.Name()
funcName = funcName[strings.LastIndexByte(funcName, filepath.Separator) + 1 :]
fileName := frame.File[strings.LastIndexByte(frame.File, filepath.Separator) + 1:]
entry.Data["file"] = fileName
entry.Data["func"] = funcName
entry.Data["line"] = frame.Line
//for {
// frame, more := frames.Next()
// println(frame.File)
// println(frame.Func.Name())
// println(frame.Line)
// println("")
//
// if !more{
// break
// }
//}
return nil
}
func init() {
log.AddHook(ContextHook{})
}
logrus_hook.go的更多相关文章
随机推荐
- LeetCode(29)-Plus One
题目: Given a non-negative number represented as an array of digits, plus one to the number. The digit ...
- rails中select不能响应多选的解决办法
在rails4.2中如果你写如下代码,post的select无法传回多选内容,即使你select设置为多选: <select id='id_size' name='name_size' mult ...
- MOOS学习笔记2——HelloWorld回调
MOOS学习笔记2--HelloWorld回调 例程 #include "MOOS/libMOOS/Comms/MOOSAsyncCommClient.h" bool OnConn ...
- 遍历输出图片加hover
1. $(".icon a>div").hover(function () { var slls = $(this).attr("class"); sll ...
- Java Web开发中路径问题小结
Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...
- Oracle100w数据大表割接
[现网问题] 最近在给咪咕做视频后台管理,移动那边希望页面上,码流字段可以支持1位小数,如8.0.自己查看数据库,发现码流字段是Number整型,也就是要换类型,打算直接换成varchar2.因为自己 ...
- Python并发编程-RabbitMQ消息队列
RabbitMQ队列 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列 ...
- complex figure
1/z ----direct by MATLAB exp(z) by QT logZ by QT 1/z 用QT画的 -----2018-03-17--------- ...
- Python人工智能之-三大数学难点 !
1. 微积分: 定积分与不定积分.全微分.最小二乘法.二重积分.微分方程与差分方程等... 2. 线性代数: 行列式.矩阵.向量.线性方程组.矩阵的特性和特性向量.二次型等... 3. 概率论和统计学 ...
- (linux虚拟机)克隆得到的虚拟机修改网卡信息和IP地址,以及DNS
克隆得到的虚拟机,与原先的系统是一模一样的包括MAC地址和IP地址.需要修改成信息. 克隆完事之后,首先在 点击生成一个新的MAC地址.然后启动,登陆. vim /etc/udev/rules.d/7 ...