自动嵌码
安装Go探针
Go探针与所有第三方模块的安装方式相同。
GOPATH模式下安装:
$ go get github.com/TingYunGo/goagent
GOMOD模式下安装:
在应用文件夹下执行:
$ go mod tidy
使用探针嵌码
根据应用使用HTTP框架的不同,需要import不同的路径。
我们以一个使用内置HTTP框架的简单例子说明如何嵌码。
源文件: main.go
代码如下:
package main
import (
"encoding/json"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
header := w.Header()
header.Set("Cache-Control", "no-cache")
header.Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
b, _ := json.Marshal(map[string]interface{}{
"status": "success",
"URI": r.URL.RawQuery,
})
w.Write(b)
})
http.ListenAndServe(":3000", nil)
}
要对如上这个应用嵌码,在源文件同级目录下,创建tingyun.go文件,内容如下:
package main
import (
_ "github.com/TingYunGo/goagent"
)
至此,全部嵌码工作已完成。
嵌码说明:此例应用使用了内置HTTP框架,对于内置HTTP框架,需要引入github.com/TingYunGo/goagent。
如果您不确定嵌码要使用哪个/哪些 import 模块路径,可通过查看支持列表了解引用依赖。
获取当前应用的依赖模块:
GOMOD 方式:查看go.mod文件,或者使用命令:
$ go mod graph
GOPATH 方式:编译时使用
-a
-v
参数:$ go build -a -v
嵌码示例
以开源项目 photoprism 为例,项目地址 https://github.com/photoprism/photoprism。
步骤1:克隆项目。
$ git clone https://github.com/photoprism/photoprism.git
步骤2:确定项目使用哪些框架和库。
进入项目文件夹,查看 go.mod文件。
$ cd photoprism $ cat go.mod
我们会看到,此项目使用了gin框架,数据库支持:
postgresql:(github.com/lib/pq) postgresql:(github.com/lib/pq) sqlite:(github.com/mattn/go-sqlite3)
步骤3:查询支持列表确定引用路径,添加源码。
查看框架支持列表,我们的嵌码操作需要引用两个路径:
github.com/TingYunGo/goagent/frameworks/gin github.com/TingYunGo/goagent/database
在代码目录 internal/photoprism下创建 tingyun.go文件,内容如下:
package photoprism import ( _ "github.com/TingYunGo/goagent/database" _ "github.com/TingYunGo/goagent/frameworks/gin" )
步骤4:在项目go.mod所在目录下执行
go mod tidy
命令,然后编译。$ go mod tidy $ make
以上4个步骤完成后,项目编译和探针嵌码工作就已全部完成。更多自动嵌码示例,请参见使用Go探针嵌码示例。