Leveled execution logs for Go
Find a file
chressie 2b790ef785
glog: generate a Fatalf-like error message when writing to logsinks fails (#76)
Writing to logsinks can fail (for example due to "no space left on device" or I/O errors). When that happens glog has no reasonable way to continue and causes the program to exit with exit status 2.

Previously glog reused the metadata of the current call to print an error message, but that was problematic. Depending on the current call's log severity it's possible that the program just exited without printing anything. That's confusing and hard to debug.

To fix that, glog creates now a new FATAL-level metadata object and prints a clearer error message (with stacks). In most situations this will at least be logged to stderr.

Thanks @atetubou for the initial fix!

cl/750790337 (google-internal)
cl/752634801 (google-internal)
2025-04-29 10:43:26 +02:00
internal glog: add context variants to most log functions 2023-11-22 12:20:37 +01:00
glog.go glog: generate a Fatalf-like error message when writing to logsinks fails (#76) 2025-04-29 10:43:26 +02:00
glog_bench_test.go glog: update glog to the latest internal version (#59) 2023-03-03 15:30:14 +01:00
glog_context_test.go glog: add context variants to most log functions 2023-11-22 12:20:37 +01:00
glog_file.go glog: have createInDir fail if the file already exists 2025-01-13 10:57:13 +01:00
glog_file_linux.go glog: don't use SIGABRT on platforms that don't support signals 2023-03-17 14:34:09 +01:00
glog_file_nonwindows.go glog: check that stderr is valid before using it by default (#72) 2024-11-04 10:58:55 +01:00
glog_file_other.go glog: don't use SIGABRT on platforms that don't support signals 2023-03-17 14:34:09 +01:00
glog_file_posix.go glog: don't use SIGABRT on platforms that don't support signals 2023-03-17 14:34:09 +01:00
glog_file_windows.go glog: check that stderr is valid before using it by default (#72) 2024-11-04 10:58:55 +01:00
glog_flags.go glog: make zero value of vModuleFlag usable 2023-03-17 14:34:09 +01:00
glog_test.go glog: have createInDir fail if the file already exists 2025-01-13 10:57:13 +01:00
glog_vmodule_test.go glog: update glog to the latest internal version (#59) 2023-03-03 15:30:14 +01:00
go.mod glog/internal/logsink: add logsink tests 2023-11-22 12:20:37 +01:00
go.sum glog/internal/logsink: add logsink tests 2023-11-22 12:20:37 +01:00
LICENSE Initial commit 2013-07-15 21:33:04 -07:00
README.md Update README file to Markdown 📃 2021-04-22 18:51:49 +01:00

glog

PkgGoDev

Leveled execution logs for Go.

This is an efficient pure Go implementation of leveled logs in the manner of the open source C++ package glog.

By binding methods to booleans it is possible to use the log package without paying the expense of evaluating the arguments to the log. Through the -vmodule flag, the package also provides fine-grained control over logging at the file level.

The comment from glog.go introduces the ideas:

Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. It provides the functions Info, Warning, Error, Fatal, plus formatting variants such as Infof. It also provides V-style loggingcontrolled by the -v and -vmodule=file=2 flags.

Basic examples:

glog.Info("Prepare to repel boarders")
	
glog.Fatalf("Initialization failed: %s", err)

See the documentation for the V function for an explanation of these examples:

if glog.V(2) {
	glog.Info("Starting transaction...")
}
glog.V(2).Infoln("Processed", nItems, "elements")

The repository contains an open source version of the log package used inside Google. The master copy of the source lives inside Google, not here. The code in this repo is for export only and is not itself under development. Feature requests will be ignored.

Send bug reports to golang-nuts@googlegroups.com.