Skip to content

Epicus Maximus

Compare
Choose a tag to compare
@3Hren 3Hren released this 28 Oct 13:06
· 7 commits to v0.3 since this release

Features

  • String formatter now has optional placeholder, which can be fully ignored by the library, when it's not present in a record.
  • String formatter now can be configured with prefix, suffix and separator while using optional or variadic placeholders.
  • String formatter has learned some convenient error-handling magic and can tell the User where and what type of error has happened.
  • It's now possible to represent time value structure in local timezone.
  • Any logger-compatible type (based on logger_base_t) can be created through a repository.
  • Use compiler extension (cross-platform nonetheless) to check log message format correctness in compile time.
  • The library now widely uses deprecated attribute feature, which allows to reduce from version to version migration pain.

Bug fixes

  • Process id attribute is back and its extraction is much cheaper.
  • Message attribute should no longer hangs out with external attributes.
  • Fixed typo in GCC 4.6 detection macro.

API

  • Log record has been completely refactored (and documented).
  • Completely dropped all scope-specific stuff. Actually, there are three scopes left, but its management is fully incapsulated into the library.
  • Completely dropped blackhole::log::* namespace, because it's already the Logging Library.
  • Logger wrapper can now provide const reference to the underlying logger.
  • Dropped 'in situ' substitution mechanism for keyword attributes, because it is creepy and useless.
  • Base config objects now return const references instead of copying.

Other

  • Allow to use '_' symbol in placeholder name.
  • Fixed compatibility with GCC 4.4, which emitted false-positive warning.
  • Attribute value holders are now comparable.
  • Frontend factory now has more convenient interface.
  • Blackhole should no longer propagate exception raised from boost::format, while formatting message string. Instead of this an exception reason will be printed as message.
  • Using specialized exception instead of more generic while parsing configuration object.
  • Added logger trait concept.
  • More forward declarations, which may be useful with compile time reducing.
  • A lot of documentation added.

Performance

  • Pack feeder now has overload that accepts string literal, which allows to avoid unnecessary transformations.
  • Multiple attribute sets is aggregated into single view class, so attribute lookup is performed lazily when it is needed by someone.
  • String formatter now internally uses ADT instead of packed functions.
  • Accelerated variadic placeholder handling in string formatter by approximately 30% via avoiding unnecessary string transformations.

Testing

  • A log of unit tests added as like as benchmarks.