Hi, first off I love the ideas behind apex and apex/log. I wanted to use apex/log in a package of mine, so to use it in multiple files I ended up doing this:
// logger.go
var Logger *alog.Entry
func init() {
alog.SetHandler(text.New(os.Stderr))
if ios.Getenv("DEBUG") != "" {
alog.SetLevel(alog.DebugLevel)
}
Logger = alog.WithField("program", "super-downloader")
}
And within the other files I could use it like so:
// downloader.go
Logger.Debug("Downloading " + v.ID)
Logger.Debug("Download started 200 OK")
This worked great until I ran my tests which use t.Parallel()
with DEBUG=true
resulting in race conditions and the following errors:
=================
WARNING: DATA RACE
Write by goroutine 10:
DEBUG[0000] getting video metadata github.com/apex/log.(*Logger).log()
/Users/montanaflynn/Development/go/src/github.com/apex/log/logger.go:126 +0x8d
github.com/apex/log.(*Entry).Debug()
/Users/montanaflynn/Development/go/src/github.com/apex/log/entry.go:57 +0x61
github.com/montanaflynn/downloader.NewVideo()
github.com/montanaflynn/downloader/_test/_obj_test/video.go:17 +0x9f
github.com/montanaflynn/downloader.TestDownload()
/Users/montanaflynn/Development/go/src/github.com/montanaflynn/downloader/download_test.go:7 +0x81
testing.tRunner()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:456 +0xdc
Previous write by goroutine 12:
github.com/apex/log.(*Logger).log()
/Users/montanaflynn/Development/go/src/github.com/apex/log/logger.go:126 +0x8d
github.com/apex/log.(*Entry).Debug()
/Users/montanaflynn/Development/go/src/github.com/apex/log/entry.go:57 +0x61
github.com/montanaflynn/downloader.NewVideo()
github.com/montanaflynn/downloader/_test/_obj_test/video.go:17 +0x9f
github.com/montanaflynn/downloader.TestFallback()
/Users/montanaflynn/Development/go/src/github.com/montanaflynn/downloader/fallback_test.go:7 +0x81
testing.tRunner()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:456 +0xdc
program=super-downloader
Goroutine 10 (running) created at:
testing.RunTests()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:561 +0xaa3
testing.(*M).Run()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:494 +0xe4
main.main()
github.com/montanaflynn/downloader/_test/_testmain.go:124 +0x384
Goroutine 12 (running) created at:
testing.RunTests()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:561 +0xaa3
testing.(*M).Run()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:494 +0xe4
main.main()
github.com/montanaflynn/downloader/_test/_testmain.go:124 +0x384
==================
==================
WARNING: DATA RACE
Write by goroutine 10:
github.com/apex/log.(*Logger).log()
/Users/montanaflynn/Development/go/src/github.com/apex/log/logger.go:127 +0xaf
github.com/apex/log.(*Entry).Debug()
/Users/montanaflynn/Development/go/src/github.com/apex/log/entry.go:57 +0x61
github.com/montanaflynn/downloader.NewVideo()
github.com/montanaflynn/downloader/_test/_obj_test/video.go:17 +0x9f
github.com/montanaflynn/downloader.TestDownload()
/Users/montanaflynn/Development/go/src/github.com/montanaflynn/downloader/download_test.go:7 +0x81
testing.tRunner()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:456 +0xdc
Previous write by goroutine 12:
github.com/apex/log.(*Logger).log()
/Users/montanaflynn/Development/go/src/github.com/apex/log/logger.go:127 +0xaf
github.com/apex/log.(*Entry).Debug()
/Users/montanaflynn/Development/go/src/github.com/apex/log/entry.go:57 +0x61
github.com/montanaflynn/downloader.NewVideo()
github.com/montanaflynn/downloader/_test/_obj_test/video.go:17 +0x9f
github.com/montanaflynn/downloader.TestFallback()
/Users/montanaflynn/Development/go/src/github.com/montanaflynn/downloader/fallback_test.go:7 +0x81
testing.tRunner()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:456 +0xdc
Goroutine 10 (running) created at:
testing.RunTests()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:561 +0xaa3
testing.(*M).Run()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:494 +0xe4
main.main()
github.com/montanaflynn/downloader/_test/_testmain.go:124 +0x384
Goroutine 12 (running) created at:
testing.RunTests()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:561 +0xaa3
testing.(*M).Run()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:494 +0xe4
main.main()
github.com/montanaflynn/downloader/_test/_testmain.go:124 +0x384
==================
==================
WARNING: DATA RACE
Write by goroutine 10:
github.com/apex/log.(*Logger).log()
/Users/montanaflynn/Development/go/src/github.com/apex/log/logger.go:128 +0x124
github.com/apex/log.(*Entry).Debug()
/Users/montanaflynn/Development/go/src/github.com/apex/log/entry.go:57 +0x61
github.com/montanaflynn/downloader.NewVideo()
github.com/montanaflynn/downloader/_test/_obj_test/video.go:17 +0x9f
github.com/montanaflynn/downloader.TestDownload()
/Users/montanaflynn/Development/go/src/github.com/montanaflynn/downloader/download_test.go:7 +0x81
testing.tRunner()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:456 +0xdc
Previous write by goroutine 12:
github.com/apex/log.(*Logger).log()
/Users/montanaflynn/Development/go/src/github.com/apex/log/logger.go:128 +0x124
github.com/apex/log.(*Entry).Debug()
/Users/montanaflynn/Development/go/src/github.com/apex/log/entry.go:57 +0x61
github.com/montanaflynn/downloader.NewVideo()
github.com/montanaflynn/downloader/_test/_obj_test/video.go:17 +0x9f
github.com/montanaflynn/downloader.TestFallback()
/Users/montanaflynn/Development/go/src/github.com/montanaflynn/downloader/fallback_test.go:7 +0x81
testing.tRunner()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:456 +0xdc
Goroutine 10 (running) created at:
testing.RunTests()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:561 +0xaa3
testing.(*M).Run()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:494 +0xe4
main.main()
github.com/montanaflynn/downloader/_test/_testmain.go:124 +0x384
Goroutine 12 (running) created at:
testing.RunTests()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:561 +0xaa3
testing.(*M).Run()
/private/var/folders/vd/7l9ys5k57l91x63sh28wl_kc0000gn/T/workdir/go/src/testing/testing.go:494 +0xe4
main.main()
github.com/montanaflynn/downloader/_test/_testmain.go:124 +0x384
==================
bug