Stack traces and the errors package

I agree that logrus is unnecessary. However, I would love my logger to print useful information such as the filename and line number. I see a lot of x.Log(“uidassigner_main”) and there is no need for that if you have something even better — the file and line number.

x.go can have a global info log and error log. Both will be initialized like

logger := log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)

To log, you just write

x.Info(...)
x.Infof(...)
x.Error(...)
x.Errorf(...)

Ok, errorf might be confusing. Maybe some other name.

There could also be a global init, something that runs after packages run their init(), like GoogleInit. Every main will just begin with x.Init which will initialize flags and run a list of init functions that packages init might have added.