log4j用多了,最近在用go写东东,log package又封装的很简陋
随即打算山寨个log4go
大体架构好说(- -!山寨嘛,哈哈)
就是不太清楚怎么获取调用log.Debug的函数名和代码所在的行数
研究了一下,直接贴代码吧,呵呵
package main
import "runtime"
import "log"
func main() {
test()
}
func test() {
test2()
}
func test2(){
pc,file,line,ok := runtime.Caller(2)
log.Println(pc)
log.Println(file)
log.Println(line)
log.Println(ok)
f := runtime.FuncForPC(pc)
log.Println(f.Name())
pc,file,line,ok = runtime.Caller(0)
log.Println(pc)
log.Println(file)
log.Println(line)
log.Println(ok)
f = runtime.FuncForPC(pc)
log.Println(f.Name())
pc,file,line,ok = runtime.Caller(1)
log.Println(pc)
log.Println(file)
log.Println(line)
log.Println(ok)
f = runtime.FuncForPC(pc)
log.Println(f.Name())
}
output:
2011/12/30 22:55:17 8216
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 7
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.main
2011/12/30 22:55:17 9065
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 23
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.test2
2011/12/30 22:55:17 8241
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 11
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.test
分享到:
相关推荐
### Golang 反射 Reflect 动态调用方法详解 #### 一、引言 反射是许多现代编程语言中的一项重要特性,它允许程序在运行时检查和操作自身的内部结构。Go 语言同样具备这样的能力,它通过 `reflect` 包提供了一套...
go 中的 cgo 模块可以让 go 无缝调用 c 或者 c++ 的代码,而 python 本身就是个 c 库,自然也可以由 cgo 直接调用,前提是指定正确的编译条件,如 Python.h 头文件(),以及要链接的库文件。本文以 Ubuntu 18.04 ...
这是一个Golang 获取wmi windows硬件信息的源代码,包括CPU,网卡,内存,硬盘等信息
集成各种获取方式,获取正确的IP
编译一个 xx.so 动态库,使用cgo调用so库输入和输出数据。 开发环境: golang调用 xx.so 动态库 DEMO, Centos7, go1.14.4
golang调用c++DLL返回值为char*参数为const char*,读取返回DLL返回值,传递char*型参数
【标题】: "一套golang开发的四方支付系统源码" 这套开源的四方支付系统是用Golang编程语言实现的,Golang,也被称为Go语言,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。它的...
基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于...
go-sh是一个golang的调用shell的库。 使用linux的人都知道shell脚本有它难以取代的优势,用2个词形容就是,简单、粗暴。但是shell有不少的坑,很容易就写的换个机器就不能使了。golang的优势很明显,写出来的代码...
在Golang编程环境中,我们需要了解如何在程序中适当地处理UAC以获取管理员权限。以下将详细讲解如何在Golang中实现这一目标。 首先,理解UAC的工作原理是至关重要的。UAC通过创建两个会话——一个具有管理员权限,...
在探讨Go语言(通常称为Golang)源码剖析之前,需要了解Golang是一门由Google开发的编程语言,它以其简洁性、高效性和并发处理能力而受到开发者的青睐。在学习这门语言的源码时,读者通常希望能够更深入地理解语言...
GoMVC-Golang源码是基于Golang编程语言构建的一个自定义服务器框架,设计灵感来源于Java的SSM(Spring、SpringMVC、MyBatis)架构。SSM架构以其清晰的分层设计和灵活的扩展性在Java Web开发中广受欢迎,而GoMVC则是...
2. 构建请求:创建包含方法名、参数的JSON-RPC请求结构体。 3. 发送请求:通过HTTP POST或WebSocket发送请求到服务器。 4. 处理响应:接收服务器返回的JSON-RPC响应,解析结果。 跨语言通信时,需要注意版本兼容性...
golang爬虫源码,支持图片列表以及单页面图片爬取,对于初学者有参考意义。该版本支持采集列表规则,页码{{n}}为变量 如:《https://www.58pic.com/collect/fav-{{n}}.html》 其中n为页码,起始页码一般默认为1 ####...
golang区块链入门案例(源码),非常优秀的学习资源! golang区块链入门案例(源码),非常优秀的学习资源! golang区块链入门案例(源码),非常优秀的学习资源! golang区块链入门案例(源码),非常优秀的学习...
在这个“Golang-Gin框架示例二十多个源码”中,你可以深入理解并学习如何利用Gin来构建各种类型的Web应用程序。 首先,Gin框架的核心概念是路由器。在Gin中,你可以通过简单的API定义路由,将HTTP请求映射到相应的...
**Golang语言爬虫——单任务版爬虫源码详解** 在互联网大数据时代,网络爬虫作为一种获取网页信息的重要工具,被广泛应用于数据分析、搜索引擎优化、市场研究等领域。Go(Golang)语言以其高效的性能、良好的并发...
自己使用golang开发的gui桌面小程序,界面比较简陋。 功能包含多tab页 base64的加密解密 生成uuid 简单实现了http的各种请求与响应支持 get、post、put、delete 压缩包包含源码 和编译好的 exe文件
自己动手,一步一步,从Golang编译环境安装到Kubernetes源码编译,跳过坑,抗过雷
GO语言基于Golang+beego的数据查询系统源码程序以Excel表格方式导入数据,可自定义登陆账户验证列,以及相关联的登陆密码验证列,程序上传Excel之后会对数据源进行加密,并且屏蔽外网对数据源目录访问。 可能会需要...