Richard
Richard

Reputation: 136

How can a golang error reporting function get compilation information

How can a function establish the following details from the runtime so that it can craft appropriate error reporting as part of a error library to be used using in many products (we are changing over to golang):

I would like to be able to retrieve both of these to augment the various file revision numbers that I can report along with some stack trace information

Useful related but off-topic information:
- You can get stack traces out of the runtime as illustrated here http://technosophos.com/2014/03/19/generating-stack-traces-in-go.html
- The reflect package http://golang.org/pkg/reflect/ can be used to examine an identified function

Thank you for your assistance,
Richard

Upvotes: 3

Views: 346

Answers (1)

Ainar-G
Ainar-G

Reputation: 36259

You can use the -X linker flag to set the value of a string variable when building:

go build -ldflags "-X main.Uname '$(uname -a)' -X main.CompileTime '$(date)'"

With such command, this code

package main

import "fmt"

// Set by the linker.
var CompileTime, Uname string

func main() {
    fmt.Println(Uname)
    fmt.Println(CompileTime)
}

will print something like

Linux user 3.13.0-53 Wed May 20 10:34:39 UTC 2015 x86_64 GNU/Linux
Wed May 27 12:00:00 UTC 2015

See the linker docs for more info.

Upvotes: 5

Related Questions