diff --git a/example_test.go b/example_test.go index 0ca4a4e56..42258aa06 100644 --- a/example_test.go +++ b/example_test.go @@ -165,27 +165,43 @@ func ExampleNamespace() { // {"level":"info","msg":"tracked some metrics","metrics":{"counter":1}} } +type addr struct { + IP string + Port int +} + type request struct { - URL string - IP string + URL string + Listen addr + Remote addr +} + +func (a addr) MarshalLogObject(enc zapcore.ObjectEncoder) error { + enc.AddString("ip", a.IP) + enc.AddInt("port", a.Port) + return nil } func (r request) MarshalLogObject(enc zapcore.ObjectEncoder) error { enc.AddString("url", r.URL) - enc.AddString("ip", r.IP) - return nil + zap.InlineObject(r.Listen).AddTo(enc) + return enc.AddObject("remote", r.Remote) } func ExampleObject() { logger := zap.NewExample() defer logger.Sync() - req := &request{"/test", "127.0.0.1"} + req := &request{ + URL: "/test", + Listen: addr{"127.0.0.1", 8080}, + Remote: addr{"127.0.0.1", 31200}, + } logger.Info("new request, in nested object", zap.Object("req", req)) logger.Info("new request, inline", zap.InlineObject(req)) // Output: - // {"level":"info","msg":"new request, in nested object","req":{"url":"/test","ip":"127.0.0.1"}} - // {"level":"info","msg":"new request, inline","url":"/test","ip":"127.0.0.1"} + // {"level":"info","msg":"new request, in nested object","req":{"url":"/test","ip":"127.0.0.1","port":8080,"remote":{"ip":"127.0.0.1","port":31200}}} + // {"level":"info","msg":"new request, inline","url":"/test","ip":"127.0.0.1","port":8080,"remote":{"ip":"127.0.0.1","port":31200}} } func ExampleNewStdLog() {