// TestLogLevelDEV tests the basic functioning of the logger in DEV mode. func TestLogLevelDEV(t *testing.T) { t.Log("Given the need to log DEV and USER messages.") { t.Log("\tWhen we set the logging level to DEV.") { log.Init(&logdest, func() int { return log.DEV }) resetLog() defer displayLog() dt := time.Now().Format("2006/01/02 15:04:05") log1 := fmt.Sprintf("%s log_test.go:81: DEV : context : FuncName : Message 1 no format\n", dt) log2 := fmt.Sprintf("%s log_test.go:82: USER : context : FuncName : Message 2 with format: A, B\n", dt) log3 := fmt.Sprintf("%s log_test.go:83: ERROR : context : FuncName : An error : Message 3 with format: C, D\n", dt) log.Dev("context", "FuncName", "Message 1 no format") log.User("context", "FuncName", "Message 2 with format: %s, %s", "A", "B") log.Error("context", "FuncName", errors.New("An error"), "Message 3 with format: %s, %s", "C", "D") if logdest.String() == log1+log2+log3 { t.Logf("\t\t%v : Should log the expected trace line.", succeed) } else { t.Log("***>", logdest.String()) t.Log("***>", log1+log2+log3) t.Errorf("\t\t%v : Should log the expected trace line.", failed) } } } }
// ExampleDev shows how to use the log package. func ExampleDev(t *testing.T) { // Init the log package for stdout. Hardcode the logging level // function to use USER level logging. log.Init(os.Stdout, func() int { return log.USER }) // Write a simple log line with no formatting. log.User("context", "ExampleDev", "This is a simple line with no formatting") // Write a simple log line with formatting. log.User("context", "ExampleDev", "This is a simple line with no formatting %d", 10) // Write a message error for the user. log.Error("context", "ExampleDev", errors.New("A user error"), "testing error") // Write a message error for the user with formatting. log.Error("context", "ExampleDev", errors.New("A user error"), "testing error %s", "value") // Write a message error for the developer only. log.Dev("context", "ExampleDev", "Formatting %v", 42) }