`
JArcher
  • 浏览: 27595 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

golang获取调用者的方法名及所在源码行数

    博客分类:
  • go
 
阅读更多

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动态调用方法

    ### Golang 反射 Reflect 动态调用方法详解 #### 一、引言 反射是许多现代编程语言中的一项重要特性,它允许程序在运行时检查和操作自身的内部结构。Go 语言同样具备这样的能力,它通过 `reflect` 包提供了一套...

    Golang如何调用Python代码详解

    go 中的 cgo 模块可以让 go 无缝调用 c 或者 c++ 的代码,而 python 本身就是个 c 库,自然也可以由 cgo 直接调用,前提是指定正确的编译条件,如 Python.h 头文件(),以及要链接的库文件。本文以 Ubuntu 18.04 ...

    Golang 获取wmi windows硬件信息

    这是一个Golang 获取wmi windows硬件信息的源代码,包括CPU,网卡,内存,硬盘等信息

    golang 获取客户端IP

    集成各种获取方式,获取正确的IP

    golang调用 xx.so 动态库 DEMO sdk.tar

    编译一个 xx.so 动态库,使用cgo调用so库输入和输出数据。 开发环境: golang调用 xx.so 动态库 DEMO, Centos7, go1.14.4

    golang调用c++DLL传递char*型参数读取返回char*字符串内容

    golang调用c++DLL返回值为char*参数为const char*,读取返回DLL返回值,传递char*型参数

    一套golang开发的四方支付系统源码.zip

    【标题】: "一套golang开发的四方支付系统源码" 这套开源的四方支付系统是用Golang编程语言实现的,Golang,也被称为Go语言,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。它的...

    基于GoLang编写的VPS实时监控系统源码+项目说明.zip

    基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于GoLang编写的VPS实时监控系统源码+项目说明.zip基于...

    golang的调用shell的库go-sh.zip

    go-sh是一个golang的调用shell的库。 使用linux的人都知道shell脚本有它难以取代的优势,用2个词形容就是,简单、粗暴。但是shell有不少的坑,很容易就写的换个机器就不能使了。golang的优势很明显,写出来的代码...

    golang win7/win8 获取管理员权限

    在Golang编程环境中,我们需要了解如何在程序中适当地处理UAC以获取管理员权限。以下将详细讲解如何在Golang中实现这一目标。 首先,理解UAC的工作原理是至关重要的。UAC通过创建两个会话——一个具有管理员权限,...

    golang源码剖析

    在探讨Go语言(通常称为Golang)源码剖析之前,需要了解Golang是一门由Google开发的编程语言,它以其简洁性、高效性和并发处理能力而受到开发者的青睐。在学习这门语言的源码时,读者通常希望能够更深入地理解语言...

    GoMVC-Golang源码

    GoMVC-Golang源码是基于Golang编程语言构建的一个自定义服务器框架,设计灵感来源于Java的SSM(Spring、SpringMVC、MyBatis)架构。SSM架构以其清晰的分层设计和灵活的扩展性在Java Web开发中广受欢迎,而GoMVC则是...

    golang与java间的json-rpc跨语言调用需要的jar

    2. 构建请求:创建包含方法名、参数的JSON-RPC请求结构体。 3. 发送请求:通过HTTP POST或WebSocket发送请求到服务器。 4. 处理响应:接收服务器返回的JSON-RPC响应,解析结果。 跨语言通信时,需要注意版本兼容性...

    golang图片爬虫源码

    golang爬虫源码,支持图片列表以及单页面图片爬取,对于初学者有参考意义。该版本支持采集列表规则,页码{{n}}为变量 如:《https://www.58pic.com/collect/fav-{{n}}.html》 其中n为页码,起始页码一般默认为1 ####...

    golang区块链入门案例(源码)

    golang区块链入门案例(源码),非常优秀的学习资源! golang区块链入门案例(源码),非常优秀的学习资源! golang区块链入门案例(源码),非常优秀的学习资源! golang区块链入门案例(源码),非常优秀的学习...

    Golang-Gin框架示例二十多个源码

    在这个“Golang-Gin框架示例二十多个源码”中,你可以深入理解并学习如何利用Gin来构建各种类型的Web应用程序。 首先,Gin框架的核心概念是路由器。在Gin中,你可以通过简单的API定义路由,将HTTP请求映射到相应的...

    golang语言爬虫 单任务版爬虫源码

    **Golang语言爬虫——单任务版爬虫源码详解** 在互联网大数据时代,网络爬虫作为一种获取网页信息的重要工具,被广泛应用于数据分析、搜索引擎优化、市场研究等领域。Go(Golang)语言以其高效的性能、良好的并发...

    golang开发的gui桌面小程序-源码

    自己使用golang开发的gui桌面小程序,界面比较简陋。 功能包含多tab页 base64的加密解密 生成uuid 简单实现了http的各种请求与响应支持 get、post、put、delete 压缩包包含源码 和编译好的 exe文件

    使用Golang编译Kubernetes源码

    自己动手,一步一步,从Golang编译环境安装到Kubernetes源码编译,跳过坑,抗过雷

    GO语言基于Golang+beego的数据查询系统源码.zip

    GO语言基于Golang+beego的数据查询系统源码程序以Excel表格方式导入数据,可自定义登陆账户验证列,以及相关联的登陆密码验证列,程序上传Excel之后会对数据源进行加密,并且屏蔽外网对数据源目录访问。 可能会需要...

Global site tag (gtag.js) - Google Analytics