First cut at adding calling method

If log.SetReportMethod(true) then method=PACKAGE.FUNCTION will be added
as a field to log lines.
eg: time="2016-11-25T19:04:43-08:00" level=info method=main msg="log
testing"

TODO: documentation, examples
This commit is contained in:
Dave Clendenan
2016-11-25 19:02:56 -08:00
parent a437dfd246
commit 93af604ba7
10 changed files with 248 additions and 20 deletions
+48
View File
@@ -169,3 +169,51 @@ func TestJSONTimeKey(t *testing.T) {
t.Fatal("Expected JSON to format time key")
}
}
func TestFieldDoesNotClashWithMethod(t *testing.T) {
SetReportMethod(false)
formatter := &JSONFormatter{}
b, err := formatter.Format(WithField("method", "howdy pardner"))
if err != nil {
t.Fatal("Unable to format entry: ", err)
}
entry := make(map[string]interface{})
err = json.Unmarshal(b, &entry)
if err != nil {
t.Fatal("Unable to unmarshal formatted entry: ", err)
}
if entry["method"] != "howdy pardner" {
t.Fatal("method field replaced when ReportMethod=false")
}
}
func TestFieldClashWithMethod(t *testing.T) {
SetReportMethod(true)
formatter := &JSONFormatter{}
b, err := formatter.Format(WithField("method", "howdy pardner"))
if err != nil {
t.Fatal("Unable to format entry: ", err)
}
entry := make(map[string]interface{})
err = json.Unmarshal(b, &entry)
if err != nil {
t.Fatal("Unable to unmarshal formatted entry: ", err)
}
if entry["fields.method"] != "howdy pardner" {
t.Fatalf("fields.method not set to original method field when ReportMethod=true (got '%s')",
entry["fields.method"])
}
if entry["method"] != "" { // since we didn't actually log, it's set to the empty string
t.Fatalf("method not set as expected when ReportMethod=true (got '%s')",
entry["method"])
}
SetReportMethod(false) // return to default value
}