...

Text file src/go.uber.org/zap/CHANGELOG.md

Documentation: go.uber.org/zap

     1# Changelog
     2All notable changes to this project will be documented in this file.
     3
     4This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
     5
     6## 1.27.0 (20 Feb 2024)
     7Enhancements:
     8* [#1378][]: Add `WithLazy` method for `SugaredLogger`.
     9* [#1399][]: zaptest: Add `NewTestingWriter` for customizing TestingWriter with more flexibility than `NewLogger`.
    10* [#1406][]: Add `Log`, `Logw`, `Logln` methods for `SugaredLogger`.
    11* [#1416][]: Add `WithPanicHook` option for testing panic logs.
    12
    13Thanks to @defval, @dimmo, @arxeiss, and @MKrupauskas for their contributions to this release.
    14
    15[#1378]: https://github.com/uber-go/zap/pull/1378
    16[#1399]: https://github.com/uber-go/zap/pull/1399
    17[#1406]: https://github.com/uber-go/zap/pull/1406
    18[#1416]: https://github.com/uber-go/zap/pull/1416
    19
    20## 1.26.0 (14 Sep 2023)
    21Enhancements:
    22* [#1297][]: Add Dict as a Field.
    23* [#1319][]: Add `WithLazy` method to `Logger` which lazily evaluates the structured
    24context.
    25* [#1350][]: String encoding is much (~50%) faster now.
    26
    27Thanks to @hhk7734, @jquirke, and @cdvr1993 for their contributions to this release.
    28
    29[#1297]: https://github.com/uber-go/zap/pull/1297
    30[#1319]: https://github.com/uber-go/zap/pull/1319
    31[#1350]: https://github.com/uber-go/zap/pull/1350
    32
    33## 1.25.0 (1 Aug 2023)
    34
    35This release contains several improvements including performance, API additions,
    36and two new experimental packages whose APIs are unstable and may change in the
    37future.
    38
    39Enhancements:
    40* [#1246][]: Add `zap/exp/zapslog` package for integration with slog.
    41* [#1273][]: Add `Name` to `Logger` which returns the Logger's name if one is set.
    42* [#1281][]: Add `zap/exp/expfield` package which contains helper methods
    43`Str` and `Strs` for constructing String-like zap.Fields.
    44* [#1310][]: Reduce stack size on `Any`.
    45
    46Thanks to @knight42, @dzakaammar, @bcspragu, and @rexywork for their contributions
    47to this release.
    48
    49[#1246]: https://github.com/uber-go/zap/pull/1246
    50[#1273]: https://github.com/uber-go/zap/pull/1273
    51[#1281]: https://github.com/uber-go/zap/pull/1281
    52[#1310]: https://github.com/uber-go/zap/pull/1310
    53
    54## 1.24.0 (30 Nov 2022)
    55
    56Enhancements:
    57* [#1148][]: Add `Level` to both `Logger` and `SugaredLogger` that reports the
    58  current minimum enabled log level.
    59* [#1185][]: `SugaredLogger` turns errors to zap.Error automatically.
    60
    61Thanks to @Abirdcfly, @craigpastro, @nnnkkk7, and @sashamelentyev for their
    62contributions to this release.
    63
    64[#1148]: https://github.coml/uber-go/zap/pull/1148
    65[#1185]: https://github.coml/uber-go/zap/pull/1185
    66
    67## 1.23.0 (24 Aug 2022)
    68
    69Enhancements:
    70* [#1147][]: Add a `zapcore.LevelOf` function to determine the level of a
    71  `LevelEnabler` or `Core`.
    72* [#1155][]: Add `zap.Stringers` field constructor to log arrays of objects
    73  that implement `String() string`.
    74
    75[#1147]: https://github.com/uber-go/zap/pull/1147
    76[#1155]: https://github.com/uber-go/zap/pull/1155
    77
    78## 1.22.0 (8 Aug 2022)
    79
    80Enhancements:
    81* [#1071][]: Add `zap.Objects` and `zap.ObjectValues` field constructors to log
    82  arrays of objects. With these two constructors, you don't need to implement
    83  `zapcore.ArrayMarshaler` for use with `zap.Array` if those objects implement
    84  `zapcore.ObjectMarshaler`.
    85* [#1079][]: Add `SugaredLogger.WithOptions` to build a copy of an existing
    86  `SugaredLogger` with the provided options applied.
    87* [#1080][]: Add `*ln` variants to `SugaredLogger` for each log level.
    88  These functions provide a string joining behavior similar to `fmt.Println`.
    89* [#1088][]: Add `zap.WithFatalHook` option to control the behavior of the
    90  logger for `Fatal`-level log entries. This defaults to exiting the program.
    91* [#1108][]: Add a `zap.Must` function that you can use with `NewProduction` or
    92  `NewDevelopment` to panic if the system was unable to build the logger.
    93* [#1118][]: Add a `Logger.Log` method that allows specifying the log level for
    94  a statement dynamically.
    95
    96Thanks to @cardil, @craigpastro, @sashamelentyev, @shota3506, and @zhupeijun
    97for their contributions to this release.
    98
    99[#1071]: https://github.com/uber-go/zap/pull/1071
   100[#1079]: https://github.com/uber-go/zap/pull/1079
   101[#1080]: https://github.com/uber-go/zap/pull/1080
   102[#1088]: https://github.com/uber-go/zap/pull/1088
   103[#1108]: https://github.com/uber-go/zap/pull/1108
   104[#1118]: https://github.com/uber-go/zap/pull/1118
   105
   106## 1.21.0 (7 Feb 2022)
   107
   108Enhancements:
   109*  [#1047][]: Add `zapcore.ParseLevel` to parse a `Level` from a string.
   110*  [#1048][]: Add `zap.ParseAtomicLevel` to parse an `AtomicLevel` from a
   111   string.
   112
   113Bugfixes:
   114* [#1058][]: Fix panic in JSON encoder when `EncodeLevel` is unset.
   115
   116Other changes:
   117* [#1052][]: Improve encoding performance when the `AddCaller` and
   118  `AddStacktrace` options are used together.
   119
   120[#1047]: https://github.com/uber-go/zap/pull/1047
   121[#1048]: https://github.com/uber-go/zap/pull/1048
   122[#1052]: https://github.com/uber-go/zap/pull/1052
   123[#1058]: https://github.com/uber-go/zap/pull/1058
   124
   125Thanks to @aerosol and @Techassi for their contributions to this release.
   126
   127## 1.20.0 (4 Jan 2022)
   128
   129Enhancements:
   130* [#989][]: Add `EncoderConfig.SkipLineEnding` flag to disable adding newline
   131  characters between log statements.
   132* [#1039][]: Add `EncoderConfig.NewReflectedEncoder` field to customize JSON
   133  encoding of reflected log fields.
   134
   135Bugfixes:
   136* [#1011][]: Fix inaccurate precision when encoding complex64 as JSON.
   137* [#554][], [#1017][]: Close JSON namespaces opened in `MarshalLogObject`
   138  methods when the methods return.
   139* [#1033][]: Avoid panicking in Sampler core if `thereafter` is zero.
   140
   141Other changes:
   142* [#1028][]: Drop support for Go < 1.15.
   143
   144[#554]: https://github.com/uber-go/zap/pull/554
   145[#989]: https://github.com/uber-go/zap/pull/989
   146[#1011]: https://github.com/uber-go/zap/pull/1011
   147[#1017]: https://github.com/uber-go/zap/pull/1017
   148[#1028]: https://github.com/uber-go/zap/pull/1028
   149[#1033]: https://github.com/uber-go/zap/pull/1033
   150[#1039]: https://github.com/uber-go/zap/pull/1039
   151
   152Thanks to @psrajat, @lruggieri, @sammyrnycreal for their contributions to this release.
   153
   154## 1.19.1 (8 Sep 2021)
   155
   156Bugfixes:
   157* [#1001][]: JSON: Fix complex number encoding with negative imaginary part. Thanks to @hemantjadon.
   158* [#1003][]: JSON: Fix inaccurate precision when encoding float32.
   159
   160[#1001]: https://github.com/uber-go/zap/pull/1001
   161[#1003]: https://github.com/uber-go/zap/pull/1003
   162
   163## 1.19.0 (9 Aug 2021)
   164
   165Enhancements:
   166* [#975][]: Avoid panicking in Sampler core if the level is out of bounds.
   167* [#984][]: Reduce the size of BufferedWriteSyncer by aligning the fields
   168  better.
   169
   170[#975]: https://github.com/uber-go/zap/pull/975
   171[#984]: https://github.com/uber-go/zap/pull/984
   172
   173Thanks to @lancoLiu and @thockin for their contributions to this release.
   174
   175## 1.18.1 (28 Jun 2021)
   176
   177Bugfixes:
   178* [#974][]: Fix nil dereference in logger constructed by `zap.NewNop`.
   179
   180[#974]: https://github.com/uber-go/zap/pull/974
   181
   182## 1.18.0 (28 Jun 2021)
   183
   184Enhancements:
   185* [#961][]: Add `zapcore.BufferedWriteSyncer`, a new `WriteSyncer` that buffers
   186  messages in-memory and flushes them periodically.
   187* [#971][]: Add `zapio.Writer` to use a Zap logger as an `io.Writer`.
   188* [#897][]: Add `zap.WithClock` option to control the source of time via the
   189  new `zapcore.Clock` interface.
   190* [#949][]: Avoid panicking in `zap.SugaredLogger` when arguments of `*w`
   191  methods don't match expectations.
   192* [#943][]: Add support for filtering by level or arbitrary matcher function to
   193  `zaptest/observer`.
   194* [#691][]: Comply with `io.StringWriter` and `io.ByteWriter` in Zap's
   195  `buffer.Buffer`.
   196
   197Thanks to @atrn0, @ernado, @heyanfu, @hnlq715, @zchee
   198for their contributions to this release.
   199
   200[#691]: https://github.com/uber-go/zap/pull/691
   201[#897]: https://github.com/uber-go/zap/pull/897
   202[#943]: https://github.com/uber-go/zap/pull/943
   203[#949]: https://github.com/uber-go/zap/pull/949
   204[#961]: https://github.com/uber-go/zap/pull/961
   205[#971]: https://github.com/uber-go/zap/pull/971
   206
   207## 1.17.0 (25 May 2021)
   208
   209Bugfixes:
   210* [#867][]: Encode `<nil>` for nil `error` instead of a panic.
   211* [#931][], [#936][]: Update minimum version constraints to address
   212  vulnerabilities in dependencies.
   213
   214Enhancements:
   215* [#865][]: Improve alignment of fields of the Logger struct, reducing its
   216  size from 96 to 80 bytes.
   217* [#881][]: Support `grpclog.LoggerV2` in zapgrpc.
   218* [#903][]: Support URL-encoded POST requests to the AtomicLevel HTTP handler
   219  with the `application/x-www-form-urlencoded` content type.
   220* [#912][]: Support multi-field encoding with `zap.Inline`.
   221* [#913][]: Speed up SugaredLogger for calls with a single string.
   222* [#928][]: Add support for filtering by field name to `zaptest/observer`.
   223
   224Thanks to @ash2k, @FMLS, @jimmystewpot, @Oncilla, @tsoslow, @tylitianrui, @withshubh, and @wziww for their contributions to this release.
   225
   226[#865]: https://github.com/uber-go/zap/pull/865
   227[#867]: https://github.com/uber-go/zap/pull/867
   228[#881]: https://github.com/uber-go/zap/pull/881
   229[#903]: https://github.com/uber-go/zap/pull/903
   230[#912]: https://github.com/uber-go/zap/pull/912
   231[#913]: https://github.com/uber-go/zap/pull/913
   232[#928]: https://github.com/uber-go/zap/pull/928
   233[#931]: https://github.com/uber-go/zap/pull/931
   234[#936]: https://github.com/uber-go/zap/pull/936
   235
   236## 1.16.0 (1 Sep 2020)
   237
   238Bugfixes:
   239* [#828][]: Fix missing newline in IncreaseLevel error messages.
   240* [#835][]: Fix panic in JSON encoder when encoding times or durations
   241  without specifying a time or duration encoder.
   242* [#843][]: Honor CallerSkip when taking stack traces.
   243* [#862][]: Fix the default file permissions to use `0666` and rely on the umask instead.
   244* [#854][]: Encode `<nil>` for nil `Stringer` instead of a panic error log.
   245
   246Enhancements:
   247* [#629][]: Added `zapcore.TimeEncoderOfLayout` to easily create time encoders
   248  for custom layouts.
   249* [#697][]: Added support for a configurable delimiter in the console encoder.
   250* [#852][]: Optimize console encoder by pooling the underlying JSON encoder.
   251* [#844][]: Add ability to include the calling function as part of logs.
   252* [#843][]: Add `StackSkip` for including truncated stacks as a field.
   253* [#861][]: Add options to customize Fatal behaviour for better testability.
   254
   255Thanks to @SteelPhase, @tmshn, @lixingwang, @wyxloading, @moul, @segevfiner, @andy-retailnext and @jcorbin for their contributions to this release.
   256
   257[#629]: https://github.com/uber-go/zap/pull/629
   258[#697]: https://github.com/uber-go/zap/pull/697
   259[#828]: https://github.com/uber-go/zap/pull/828
   260[#835]: https://github.com/uber-go/zap/pull/835
   261[#843]: https://github.com/uber-go/zap/pull/843
   262[#844]: https://github.com/uber-go/zap/pull/844
   263[#852]: https://github.com/uber-go/zap/pull/852
   264[#854]: https://github.com/uber-go/zap/pull/854
   265[#861]: https://github.com/uber-go/zap/pull/861
   266[#862]: https://github.com/uber-go/zap/pull/862
   267
   268## 1.15.0 (23 Apr 2020)
   269
   270Bugfixes:
   271* [#804][]: Fix handling of `Time` values out of `UnixNano` range.
   272* [#812][]: Fix `IncreaseLevel` being reset after a call to `With`.
   273
   274Enhancements:
   275* [#806][]: Add `WithCaller` option to supersede the `AddCaller` option. This
   276  allows disabling annotation of log entries with caller information if
   277  previously enabled with `AddCaller`.
   278* [#813][]: Deprecate `NewSampler` constructor in favor of
   279  `NewSamplerWithOptions` which supports a `SamplerHook` option. This option
   280   adds support for monitoring sampling decisions through a hook.
   281
   282Thanks to @danielbprice for their contributions to this release.
   283
   284[#804]: https://github.com/uber-go/zap/pull/804
   285[#812]: https://github.com/uber-go/zap/pull/812
   286[#806]: https://github.com/uber-go/zap/pull/806
   287[#813]: https://github.com/uber-go/zap/pull/813
   288
   289## 1.14.1 (14 Mar 2020)
   290
   291Bugfixes:
   292* [#791][]: Fix panic on attempting to build a logger with an invalid Config.
   293* [#795][]: Vendoring Zap with `go mod vendor` no longer includes Zap's
   294  development-time dependencies.
   295* [#799][]: Fix issue introduced in 1.14.0 that caused invalid JSON output to
   296  be generated for arrays of `time.Time` objects when using string-based time
   297  formats.
   298
   299Thanks to @YashishDua for their contributions to this release.
   300
   301[#791]: https://github.com/uber-go/zap/pull/791
   302[#795]: https://github.com/uber-go/zap/pull/795
   303[#799]: https://github.com/uber-go/zap/pull/799
   304
   305## 1.14.0 (20 Feb 2020)
   306
   307Enhancements:
   308* [#771][]: Optimize calls for disabled log levels.
   309* [#773][]: Add millisecond duration encoder.
   310* [#775][]: Add option to increase the level of a logger.
   311* [#786][]: Optimize time formatters using `Time.AppendFormat` where possible.
   312
   313Thanks to @caibirdme for their contributions to this release.
   314
   315[#771]: https://github.com/uber-go/zap/pull/771
   316[#773]: https://github.com/uber-go/zap/pull/773
   317[#775]: https://github.com/uber-go/zap/pull/775
   318[#786]: https://github.com/uber-go/zap/pull/786
   319
   320## 1.13.0 (13 Nov 2019)
   321
   322Enhancements:
   323* [#758][]: Add `Intp`, `Stringp`, and other similar `*p` field constructors
   324  to log pointers to primitives with support for `nil` values.
   325
   326Thanks to @jbizzle for their contributions to this release.
   327
   328[#758]: https://github.com/uber-go/zap/pull/758
   329
   330## 1.12.0 (29 Oct 2019)
   331
   332Enhancements:
   333* [#751][]: Migrate to Go modules.
   334
   335[#751]: https://github.com/uber-go/zap/pull/751
   336
   337## 1.11.0 (21 Oct 2019)
   338
   339Enhancements:
   340* [#725][]: Add `zapcore.OmitKey` to omit keys in an `EncoderConfig`.
   341* [#736][]: Add `RFC3339` and `RFC3339Nano` time encoders.
   342
   343Thanks to @juicemia, @uhthomas for their contributions to this release.
   344
   345[#725]: https://github.com/uber-go/zap/pull/725
   346[#736]: https://github.com/uber-go/zap/pull/736
   347
   348## 1.10.0 (29 Apr 2019)
   349
   350Bugfixes:
   351* [#657][]: Fix `MapObjectEncoder.AppendByteString` not adding value as a
   352  string.
   353* [#706][]: Fix incorrect call depth to determine caller in Go 1.12.
   354
   355Enhancements:
   356* [#610][]: Add `zaptest.WrapOptions` to wrap `zap.Option` for creating test
   357  loggers.
   358* [#675][]: Don't panic when encoding a String field.
   359* [#704][]: Disable HTML escaping for JSON objects encoded using the
   360  reflect-based encoder.
   361
   362Thanks to @iaroslav-ciupin, @lelenanam, @joa, @NWilson for their contributions
   363to this release.
   364
   365[#657]: https://github.com/uber-go/zap/pull/657
   366[#706]: https://github.com/uber-go/zap/pull/706
   367[#610]: https://github.com/uber-go/zap/pull/610
   368[#675]: https://github.com/uber-go/zap/pull/675
   369[#704]: https://github.com/uber-go/zap/pull/704
   370
   371## 1.9.1 (06 Aug 2018)
   372
   373Bugfixes:
   374
   375* [#614][]: MapObjectEncoder should not ignore empty slices.
   376
   377[#614]: https://github.com/uber-go/zap/pull/614
   378
   379## 1.9.0 (19 Jul 2018)
   380
   381Enhancements:
   382* [#602][]: Reduce number of allocations when logging with reflection.
   383* [#572][], [#606][]: Expose a registry for third-party logging sinks.
   384
   385Thanks to @nfarah86, @AlekSi, @JeanMertz, @philippgille, @etsangsplk, and
   386@dimroc for their contributions to this release.
   387
   388[#602]: https://github.com/uber-go/zap/pull/602
   389[#572]: https://github.com/uber-go/zap/pull/572
   390[#606]: https://github.com/uber-go/zap/pull/606
   391
   392## 1.8.0 (13 Apr 2018)
   393
   394Enhancements:
   395* [#508][]: Make log level configurable when redirecting the standard
   396  library's logger.
   397* [#518][]: Add a logger that writes to a `*testing.TB`.
   398* [#577][]: Add a top-level alias for `zapcore.Field` to clean up GoDoc.
   399
   400Bugfixes:
   401* [#574][]: Add a missing import comment to `go.uber.org/zap/buffer`.
   402
   403Thanks to @DiSiqueira and @djui for their contributions to this release.
   404
   405[#508]: https://github.com/uber-go/zap/pull/508
   406[#518]: https://github.com/uber-go/zap/pull/518
   407[#577]: https://github.com/uber-go/zap/pull/577
   408[#574]: https://github.com/uber-go/zap/pull/574
   409
   410## 1.7.1 (25 Sep 2017)
   411
   412Bugfixes:
   413* [#504][]: Store strings when using AddByteString with the map encoder.
   414
   415[#504]: https://github.com/uber-go/zap/pull/504
   416
   417## 1.7.0 (21 Sep 2017)
   418
   419Enhancements:
   420
   421* [#487][]: Add `NewStdLogAt`, which extends `NewStdLog` by allowing the user
   422  to specify the level of the logged messages.
   423
   424[#487]: https://github.com/uber-go/zap/pull/487
   425
   426## 1.6.0 (30 Aug 2017)
   427
   428Enhancements:
   429
   430* [#491][]: Omit zap stack frames from stacktraces.
   431* [#490][]: Add a `ContextMap` method to observer logs for simpler
   432  field validation in tests.
   433
   434[#490]: https://github.com/uber-go/zap/pull/490
   435[#491]: https://github.com/uber-go/zap/pull/491
   436
   437## 1.5.0 (22 Jul 2017)
   438
   439Enhancements:
   440
   441* [#460][] and [#470][]: Support errors produced by `go.uber.org/multierr`.
   442* [#465][]: Support user-supplied encoders for logger names.
   443
   444Bugfixes:
   445
   446* [#477][]: Fix a bug that incorrectly truncated deep stacktraces.
   447
   448Thanks to @richard-tunein and @pavius for their contributions to this release.
   449
   450[#477]: https://github.com/uber-go/zap/pull/477
   451[#465]: https://github.com/uber-go/zap/pull/465
   452[#460]: https://github.com/uber-go/zap/pull/460
   453[#470]: https://github.com/uber-go/zap/pull/470
   454
   455## 1.4.1 (08 Jun 2017)
   456
   457This release fixes two bugs.
   458
   459Bugfixes:
   460
   461* [#435][]: Support a variety of case conventions when unmarshaling levels.
   462* [#444][]: Fix a panic in the observer.
   463
   464[#435]: https://github.com/uber-go/zap/pull/435
   465[#444]: https://github.com/uber-go/zap/pull/444
   466
   467## 1.4.0 (12 May 2017)
   468
   469This release adds a few small features and is fully backward-compatible.
   470
   471Enhancements:
   472
   473* [#424][]: Add a `LineEnding` field to `EncoderConfig`, allowing users to
   474  override the Unix-style default.
   475* [#425][]: Preserve time zones when logging times.
   476* [#431][]: Make `zap.AtomicLevel` implement `fmt.Stringer`, which makes a
   477  variety of operations a bit simpler.
   478
   479[#424]: https://github.com/uber-go/zap/pull/424
   480[#425]: https://github.com/uber-go/zap/pull/425
   481[#431]: https://github.com/uber-go/zap/pull/431
   482
   483## 1.3.0 (25 Apr 2017)
   484
   485This release adds an enhancement to zap's testing helpers as well as the
   486ability to marshal an AtomicLevel. It is fully backward-compatible.
   487
   488Enhancements:
   489
   490* [#415][]: Add a substring-filtering helper to zap's observer. This is
   491  particularly useful when testing the `SugaredLogger`.
   492* [#416][]: Make `AtomicLevel` implement `encoding.TextMarshaler`.
   493
   494[#415]: https://github.com/uber-go/zap/pull/415
   495[#416]: https://github.com/uber-go/zap/pull/416
   496
   497## 1.2.0 (13 Apr 2017)
   498
   499This release adds a gRPC compatibility wrapper. It is fully backward-compatible.
   500
   501Enhancements:
   502
   503* [#402][]: Add a `zapgrpc` package that wraps zap's Logger and implements
   504  `grpclog.Logger`.
   505
   506[#402]: https://github.com/uber-go/zap/pull/402
   507
   508## 1.1.0 (31 Mar 2017)
   509
   510This release fixes two bugs and adds some enhancements to zap's testing helpers.
   511It is fully backward-compatible.
   512
   513Bugfixes:
   514
   515* [#385][]: Fix caller path trimming on Windows.
   516* [#396][]: Fix a panic when attempting to use non-existent directories with
   517  zap's configuration struct.
   518
   519Enhancements:
   520
   521* [#386][]: Add filtering helpers to zaptest's observing logger.
   522
   523Thanks to @moitias for contributing to this release.
   524
   525[#385]: https://github.com/uber-go/zap/pull/385
   526[#396]: https://github.com/uber-go/zap/pull/396
   527[#386]: https://github.com/uber-go/zap/pull/386
   528
   529## 1.0.0 (14 Mar 2017)
   530
   531This is zap's first stable release. All exported APIs are now final, and no
   532further breaking changes will be made in the 1.x release series. Anyone using a
   533semver-aware dependency manager should now pin to `^1`.
   534
   535Breaking changes:
   536
   537* [#366][]: Add byte-oriented APIs to encoders to log UTF-8 encoded text without
   538  casting from `[]byte` to `string`.
   539* [#364][]: To support buffering outputs, add `Sync` methods to `zapcore.Core`,
   540  `zap.Logger`, and `zap.SugaredLogger`.
   541* [#371][]: Rename the `testutils` package to `zaptest`, which is less likely to
   542  clash with other testing helpers.
   543
   544Bugfixes:
   545
   546* [#362][]: Make the ISO8601 time formatters fixed-width, which is friendlier
   547  for tab-separated console output.
   548* [#369][]: Remove the automatic locks in `zapcore.NewCore`, which allows zap to
   549  work with concurrency-safe `WriteSyncer` implementations.
   550* [#347][]: Stop reporting errors when trying to `fsync` standard out on Linux
   551  systems.
   552* [#373][]: Report the correct caller from zap's standard library
   553  interoperability wrappers.
   554
   555Enhancements:
   556
   557* [#348][]: Add a registry allowing third-party encodings to work with zap's
   558  built-in `Config`.
   559* [#327][]: Make the representation of logger callers configurable (like times,
   560  levels, and durations).
   561* [#376][]: Allow third-party encoders to use their own buffer pools, which
   562  removes the last performance advantage that zap's encoders have over plugins.
   563* [#346][]: Add `CombineWriteSyncers`, a convenience function to tee multiple
   564  `WriteSyncer`s and lock the result.
   565* [#365][]: Make zap's stacktraces compatible with mid-stack inlining (coming in
   566  Go 1.9).
   567* [#372][]: Export zap's observing logger as `zaptest/observer`. This makes it
   568  easier for particularly punctilious users to unit test their application's
   569  logging.
   570
   571Thanks to @suyash, @htrendev, @flisky, @Ulexus, and @skipor for their
   572contributions to this release.
   573
   574[#366]: https://github.com/uber-go/zap/pull/366
   575[#364]: https://github.com/uber-go/zap/pull/364
   576[#371]: https://github.com/uber-go/zap/pull/371
   577[#362]: https://github.com/uber-go/zap/pull/362
   578[#369]: https://github.com/uber-go/zap/pull/369
   579[#347]: https://github.com/uber-go/zap/pull/347
   580[#373]: https://github.com/uber-go/zap/pull/373
   581[#348]: https://github.com/uber-go/zap/pull/348
   582[#327]: https://github.com/uber-go/zap/pull/327
   583[#376]: https://github.com/uber-go/zap/pull/376
   584[#346]: https://github.com/uber-go/zap/pull/346
   585[#365]: https://github.com/uber-go/zap/pull/365
   586[#372]: https://github.com/uber-go/zap/pull/372
   587
   588## 1.0.0-rc.3 (7 Mar 2017)
   589
   590This is the third release candidate for zap's stable release. There are no
   591breaking changes.
   592
   593Bugfixes:
   594
   595* [#339][]: Byte slices passed to `zap.Any` are now correctly treated as binary blobs
   596  rather than `[]uint8`.
   597
   598Enhancements:
   599
   600* [#307][]: Users can opt into colored output for log levels.
   601* [#353][]: In addition to hijacking the output of the standard library's
   602  package-global logging functions, users can now construct a zap-backed
   603  `log.Logger` instance.
   604* [#311][]: Frames from common runtime functions and some of zap's internal
   605  machinery are now omitted from stacktraces.
   606
   607Thanks to @ansel1 and @suyash for their contributions to this release.
   608
   609[#339]: https://github.com/uber-go/zap/pull/339
   610[#307]: https://github.com/uber-go/zap/pull/307
   611[#353]: https://github.com/uber-go/zap/pull/353
   612[#311]: https://github.com/uber-go/zap/pull/311
   613
   614## 1.0.0-rc.2 (21 Feb 2017)
   615
   616This is the second release candidate for zap's stable release. It includes two
   617breaking changes.
   618
   619Breaking changes:
   620
   621* [#316][]: Zap's global loggers are now fully concurrency-safe
   622  (previously, users had to ensure that `ReplaceGlobals` was called before the
   623  loggers were in use). However, they must now be accessed via the `L()` and
   624  `S()` functions. Users can update their projects with
   625
   626  ```
   627  gofmt -r "zap.L -> zap.L()" -w .
   628  gofmt -r "zap.S -> zap.S()" -w .
   629  ```
   630* [#309][] and [#317][]: RC1 was mistakenly shipped with invalid
   631  JSON and YAML struct tags on all config structs. This release fixes the tags
   632  and adds static analysis to prevent similar bugs in the future.
   633
   634Bugfixes:
   635
   636* [#321][]: Redirecting the standard library's `log` output now
   637  correctly reports the logger's caller.
   638
   639Enhancements:
   640
   641* [#325][] and [#333][]: Zap now transparently supports non-standard, rich
   642  errors like those produced by `github.com/pkg/errors`.
   643* [#326][]: Though `New(nil)` continues to return a no-op logger, `NewNop()` is
   644  now preferred. Users can update their projects with `gofmt -r 'zap.New(nil) ->
   645  zap.NewNop()' -w .`.
   646* [#300][]: Incorrectly importing zap as `github.com/uber-go/zap` now returns a
   647  more informative error.
   648
   649Thanks to @skipor and @chapsuk for their contributions to this release.
   650
   651[#316]: https://github.com/uber-go/zap/pull/316
   652[#309]: https://github.com/uber-go/zap/pull/309
   653[#317]: https://github.com/uber-go/zap/pull/317
   654[#321]: https://github.com/uber-go/zap/pull/321
   655[#325]: https://github.com/uber-go/zap/pull/325
   656[#333]: https://github.com/uber-go/zap/pull/333
   657[#326]: https://github.com/uber-go/zap/pull/326
   658[#300]: https://github.com/uber-go/zap/pull/300
   659
   660## 1.0.0-rc.1 (14 Feb 2017)
   661
   662This is the first release candidate for zap's stable release. There are multiple
   663breaking changes and improvements from the pre-release version. Most notably:
   664
   665* **Zap's import path is now "go.uber.org/zap"** &mdash; all users will
   666  need to update their code.
   667* User-facing types and functions remain in the `zap` package. Code relevant
   668  largely to extension authors is now in the `zapcore` package.
   669* The `zapcore.Core` type makes it easy for third-party packages to use zap's
   670  internals but provide a different user-facing API.
   671* `Logger` is now a concrete type instead of an interface.
   672* A less verbose (though slower) logging API is included by default.
   673* Package-global loggers `L` and `S` are included.
   674* A human-friendly console encoder is included.
   675* A declarative config struct allows common logger configurations to be managed
   676  as configuration instead of code.
   677* Sampling is more accurate, and doesn't depend on the standard library's shared
   678  timer heap.
   679
   680## 0.1.0-beta.1 (6 Feb 2017)
   681
   682This is a minor version, tagged to allow users to pin to the pre-1.0 APIs and
   683upgrade at their leisure. Since this is the first tagged release, there are no
   684backward compatibility concerns and all functionality is new.
   685
   686Early zap adopters should pin to the 0.1.x minor version until they're ready to
   687upgrade to the upcoming stable release.

View as plain text