I'm using the log packages and I'm wondering what's the default destination of the log data. I can't find it anywhere. Do I need a io writer and specifically call it after each log or how is it supposed to work ?
The three most popular ways to log errors in Golang are: Output the errors to the console. Log the errors to a file. Use a logging framework.
By default, the goanywhere. log file is stored in the [install dir]/userdata/logs directory.
The most common way to handle errors is to return the error type as the last return value of a function call and check for the nil condition using an if statement.
An error log is a file that contains detailed records of error conditions a computer software encounters when it's running. The name is generic: sometimes, an application can log non-error type messages in its error log.
It should be stdErr
, as in line 58 of log.go
:
var std = New(os.Stderr, "", LstdFlags)
So package methods like Fatal()
uses std by default:
// Fatal is equivalent to Print() followed by a call to os.Exit(1).
func Fatal(v ...interface{}) {
std.Output(2, fmt.Sprint(v...))
os.Exit(1)
}
The blog post "How to write Go packages coders will love " (by Baron Schwartz) references that technique:
One of the patterns I've found in the standard Go library is what I call package-and-object. (That's my own name; maybe I'm reinventing or naming something already known by another name.) You can see this idiom in several packages. It makes these packages a delight to use.
The essence of the idiom is that you design a type with methods as usual, and then you also place matching functions at the package level itself. These functions simply delegate to a default instance of the type that's a private package-level variable, created in an
init()
function.To take a look at the default logging functionality, for example, you can just import the
log
package and then write things likelog.Print()
. It's super-concise and handy, and it does the right thing.
Want to customize it? Make your ownlog.Logger
variable, and set its properties.
Note that, with Go 1.13 (Q3 2019), the new Writer()
function returns the output destination for the standard logger.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With