log: expose std via new Default function

To allow passing around the package level *Logger, it is now exposed to
callers of the Default function. We considered exposing std, however at
this time there is no need to allow callers to replace std only pass and
call methods directly.

Fixes #39057

Change-Id: I710b16a3aa5e4e878870561dbf59560f98d8d09a
Reviewed-on: https://go-review.googlesource.com/c/go/+/264460
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Trust: Alberto Donizetti <alb.donizetti@gmail.com>
diff --git a/src/log/log.go b/src/log/log.go
index 216cfe0..8c0f83f 100644
--- a/src/log/log.go
+++ b/src/log/log.go
@@ -75,6 +75,9 @@
 
 var std = New(os.Stderr, "", LstdFlags)
 
+// Default returns the *Logger used by the package-level output functions.
+func Default() *Logger { return std }
+
 // Cheap integer to fixed-width decimal ASCII. Give a negative width to avoid zero-padding.
 func itoa(buf *[]byte, i int, wid int) {
 	// Assemble decimal in reverse order.
diff --git a/src/log/log_test.go b/src/log/log_test.go
index cdccbc5..5be8e82 100644
--- a/src/log/log_test.go
+++ b/src/log/log_test.go
@@ -74,6 +74,12 @@
 	SetOutput(os.Stderr)
 }
 
+func TestDefault(t *testing.T) {
+	if got := Default(); got != std {
+		t.Errorf("Default [%p] should be std [%p]", got, std)
+	}
+}
+
 func TestAll(t *testing.T) {
 	for _, testcase := range tests {
 		testPrint(t, testcase.flag, testcase.prefix, testcase.pattern, false)