Documentation
¶
Overview ¶
Package errlog provides a simple object to enhance Go source code debugging
Example result:
$ go run myfailingapp.go
Program starting
error in main.main: something failed here
line 13 of /Users/snwfdhmp/go/src/github.com/snwfdhmp/sandbox/testerr.go
9: func main() {
10: fmt.Println("Program starting")
11: err := errors.New("something failed here")
12:
13: errlog.Debug(err)
14:
15: fmt.Println("End of the program")
16: }
exit status 1
You can configure your own logger with these options :
type Config struct {
LinesBefore int
LinesAfter int
PrintStack bool
PrintSource bool
PrintError bool
ExitOnDebugSuccess bool
}
Example :
debug := errlog.NewLogger(&errlog.Config{
LinesBefore: 2,
LinesAfter: 1,
PrintError: true,
PrintSource: true,
PrintStack: false,
ExitOnDebugSuccess: true,
})
// ...
if err != nil {
debug.Debug(err)
return
}
Outputs :
Error in main.someBigFunction(): I'm failing for no reason
line 41 of /Users/snwfdhmp/go/src/github.com/snwfdhmp/sandbox/testerr.go:41
33: func someBigFunction() {
...
40: if err := someNastyFunction(); err != nil {
41: debug.Debug(err)
42: return
43: }
exit status 1
Index ¶
Constants ¶
const ( // ModeDisabled represents the disabled mode (NO-OP) ModeDisabled = iota + 1 // ModeEnabled represents the enabled mode (Print) ModeEnabled )
Variables ¶
var ( //DefaultLoggerPrintFunc is fmt.Printf without return values DefaultLoggerPrintFunc = func(format string, data ...interface{}) { fmt.Printf(format+"\n", data...) } //DefaultLogger logger implements default configuration for a logger DefaultLogger = &logger{ config: &Config{ PrintFunc: DefaultLoggerPrintFunc, LinesBefore: 4, LinesAfter: 2, PrintStack: false, PrintSource: true, PrintError: true, ExitOnDebugSuccess: false, }, } )
Functions ¶
func PrintStackMinus ¶
func PrintStackMinus(depthToRemove int)
PrintStackMinus prints the current stack trace minus the amount of depth in parameter
func SetDebugMode ¶
func SetDebugMode(toggle bool)
SetDebugMode sets debug mode to On if toggle==true or Off if toggle==false. It changes log level an so displays more logs about whats happening. Useful for debugging.
Types ¶
type Config ¶
type Config struct {
PrintFunc func(format string, data ...interface{}) //Printer func (eg: fmt.Printf)
LinesBefore int //How many lines to print *before* the error line when printing source code
LinesAfter int //How many lines to print *after* the error line when printing source code
PrintStack bool //Shall we print stack trace ? yes/no
PrintSource bool //Shall we print source code along ? yes/no
PrintError bool //Shall we print the error of Debug(err) ? yes/no
ExitOnDebugSuccess bool //Shall we os.Exit(1) after Debug has finished logging everything ? (doesn't happen when err is nil)
DisableStackIndentation bool //Shall we print stack vertically instead of indented
Mode int
}
Config holds the configuration for a logger
type Logger ¶
type Logger interface {
// Debug wraps up Logger debugging funcs related to an error
// If the given error is nil, it returns immediately
// It relies on Logger.Config to determine what will be printed or executed
// It returns whether err != nil
Debug(err error) bool
//PrintSource prints lines based on given opts (see PrintSourceOptions type definition)
PrintSource(lines []string, opts PrintSourceOptions)
//DebugSource debugs a source file
DebugSource(filename string, lineNumber int)
//SetConfig replaces current config with the given one
SetConfig(cfg *Config)
//Config returns current config
Config() *Config
//Disable is used to disable Logger (every call to this Logger will perform NO-OP (no operation)) and return instantly
//Use Disable(true) to disable and Disable(false) to enable again
Disable(bool)
}
Logger interface allows to log an error, or to print source code lines. Check out NewLogger function to learn more about Logger objects and Config.
type PrintSourceOptions ¶
type PrintSourceOptions struct {
FuncLine int
StartLine int
EndLine int
Highlighted map[int][]int //map[lineIndex][columnstart, columnEnd] of chars to highlight
}
PrintSourceOptions represents config for (*logger).PrintSource func
type StackTraceItem ¶
type StackTraceItem struct {
CallingObject string
Args []string
SourcePathRef string
SourceLineRef int
MysteryNumber int64 // don't know what this is, no documentation found, if you know please let me know via a PR !
}
StackTraceItem represents parsed information of a stack trace item
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
basic
command
|
|
|
custom
command
|
|
|
disabled
command
|
|
|
failingLineFar
command
|
|
|
stackTrace
command
|




