Timber Elixir Versions Save

🌲 Great Elixir logging made easy

v3.1.0

5 years ago

Changed

  • Timber.InvalidAPIKeyError is now Timber.Errors.InvalidAPIKeyError
  • Events are no longer nested under the event key.
  • Custom events are no longer nested under the event.custom key, they have simply been moved to the root of the document.
  • Custom contexts are no longer nested under the context.custom key, they have simply been moved to the root of the document.
  • JSON representations of log events no longer include the $schema key since Timber 2.0 does not strictly require a schema anymore.
  • All Timber.Events.* and Timber.Contexts.* structs have been deprecated in favor of simple maps since Timber 2.0 no longer requires a strict schema. Module docs for each module has been updated accordingly.
  • Errors are no longer automatically parsed in the logger backend. Please use the :timber_exceptions library if you'd like to structure errors. This is a proper approach to structuring these events.
  • Handle unencodable content

v3.0.0

5 years ago

Changed

  • Jason is now used for JSON encoding. The JSON library can no longer be injected via configuration.
  • msgpax 1.x is no longer supported
  • Logs are now sent in batches of 1000 instead of 5000 to comply with the Timber library specification
  • Timber.LoggerBackends.HTTP.TimberAPIKeyInvalid is now Timber.InvalidAPIKeyError

Removed

  • Removed support for Elixir 1.3 and lower
  • Removed integration with Phoenix; use the :timber_phoenix package instead
  • Removed integration with Plug; use the :timber_plug package instead
  • Removed integration with Ecto; use the :timber_ecto package instead
  • Removed integration with ExAws
  • Removed integration with :error_logger; use the :timber_exceptions package instead
  • Removed the installer (mix timber.install); manual installation is now expected
  • Removed the test event Mix task

2.8.4

5 years ago

Fixed

  • The hostname caching released in v2.8.3 had the potential to crash the Logger if an application was started between :logger and :timber and made Logger calls. This was because the ETS table holding the cache had not been started by Timber yet. To fix this, the hostname is now cached in the application environment which is guaranteed to be available by that point.

v2.8.3

5 years ago

Changed

  • The system hostname is now cached after it is fetched the first time. Previously, the hostname was fetched every time a log line was formatted for output (whether by formatting occured in the console formatter or during HTTP transport). This reduces the overhead caused by fetching the hostname.

v2.8.2

5 years ago

Changed

  • Allow ~> 2.0 for the :msgpax dependency.

v2.8.1

5 years ago

Added

  • Add support for inline context via the :context Logger metadata key.
  • Add Timber.remove_context_key for removing an individual keys off of context structures.

Changed

  • Relax the :plug dependency to allow for more plug versions.

v2.8.0

6 years ago

Special thanks in this release to @mitchellhenke for his work on the :error_logger integration!

Added

  • Timber.Integrations.ErrorLogger allows you to include a new OTP :error\_logger handler to better maintain the structure of errors and stacktraces. It also collapses many cases of multi-line logs into a single line.

v2.7.0

6 years ago

Added

  • Timber.add_context/2 now allows you to set context either locally or globally; Timber.add_context/1 will default to storing the context locally (consistent with previous versions of the library)
  • The Timber.LocalContext now manages setting and updating the Timber context maintained in the Elixir Logger metadata. This replaces the Timber.CurrentContext module. Timber.LocalContext.get/0 should be used where Timber.CurrentContext.load/0 was used before, and Timber.LocalContext.put/1 should be used where Timber.CurrentContext.save/1 was used.

Changed

  • Timber.LogEntry.new/4 will fetch the global context and merge it into the local metadata context. The local context will override the global context based on the rules for Timber.Context.merge/2
  • Phoenix Channels integration will now accept any channel message payload. (Previously, non-map types were dropped and replaced with an empty map.)

Deprecated

  • Timber.CurrentContext has been deprecated in favor of Timber.LocalContext; the new name better reflects the purpose of the module. Use of Timber.CurrentContext will still be supported for the lifetime of v2

Fixed

  • Phoenix Channels integration with Phoneix 1.3+ will no longer fail if the payload of a channel message is a list

v2.6.1

6 years ago

Fixed

  • Fixed an error where Timber.Integrations.PhoenixInstrumenter would fail on versions of Phoenix prior to 1.3 that do not pass a :conn key with the phoenix_controller_render/3 :start event.

  • Fixed Timber.Integrations.PhoenixInstrumenter did not define a fall-through for phoenix_controller_render/3 during the :start event for when the third-parameter is in a different format than expected.

  • Fixed Timber.Integrations.PhoenixInstrumenter did not define a fall-through when the instrumentation system sends a default state value for the :stop event on phoenix_controller_render/3.

v2.6.0

6 years ago

Changed

  • Logger backends now conform to the :gen_event behaviour rather than calling the GenEvent.__using__/1 macro which is deprecated in Elixir 1.5.0 and above. The change is backwards compatible since :gen_event is provided by all supported versions of Erlang.