Skip to content

Releases: lwhttpdorg/log4cpp

v4.0.5

27 Feb 14:37

Choose a tag to compare

Release Notes for v4.0.5

This is a maintenance release focusing on code modernization, build improvements, and bug fixes.

Release Date: 2026-02-27

Features

  • Added code analysis support: introduce code-analysis.sh and .clang-tidy for static checking via clang-tidy
  • Added build scripts: build-deb.sh and build-rpm.sh for easier DEB/RPM packaging
  • Improved code coverage: new CMake option ENABLE_LOG4CPP_COVERAGE for coverage measurement on GNU platforms

🐛 Bug Fixes

  • Fixed: Prevent exceptions from std::filesystem::exists when checking configuration file access
  • Enhanced error handling for configuration file loading; fallback to default config on errors
  • Various code refactors and type improvements (explicit underlying types for enum class), reducing warnings and potential errors

📝 Documentation

  • Updated README and sample config files to explain new build scripts, coverage, and configuration options
  • Improved code comments using modern C++ patterns; clarified namespace assignments

v4.0.4

19 Jan 08:57

Choose a tag to compare

Release Notes

This is a maintenance release focused on improving documentation, code clarity, the build system, and fixing bugs.

Release Date: January 8, 2026

✨ Features

  • Multi-Platform Packaging: Added support for multi-platform DEB and RPM packaging

🐛 Bug Fixes

  • Hot Reload Fix: Root logger config updates are not propagated to loggers using root as fallback during hot reload

📝 Documentation

  • Fixed Chinese README file content

Key Improvements: Added DEB and RPM packaging support. Fixed hot reload configuration propagation issues.

v4.0.3

18 Dec 15:20

Choose a tag to compare

Release Notes v4.0.3

This is a maintenance release focused on improving documentation, code clarity, the build system, and fixing bugs.

✨ Features & Improvements

  • API Simplification: The public logger interface has been simplified from log4cpp::log::logger to log4cpp::logger, making the API more intuitive for users.
  • Extensive Code Documentation: Added detailed Doxygen comments to the main header files (log4cpp.hpp, logger.hpp). This greatly improves code readability and maintainability by clarifying the responsibilities of core components like logger_manager, supervisor, and the logger_proxy.
  • Improved Hot-Reload Documentation: The README_ZH.md file now contains a more accurate and clearer explanation of how the configuration hot-reloading feature works, explaining that existing logger pointers remain valid thanks to the internal proxy pattern.
  • Code Refactoring & Cleanup:
    • Renamed internal exception classes for better clarity.
    • Performed various internal code cleanups, such as using std::unique_lock without template arguments (C++17 feature) and improving platform-specific code handling in CMake.
  • Appenders are created on demand: Appenders configured in appenders but not referenced in loggers will not be created

🐛 Bug Fixes

  • Socket Appender: Fixed an issue where the prefer-stack configuration option ("IPv4" or "IPv6") was not being correctly applied during hostname resolution.
  • Testing Stability:
    • Addressed a potential race condition in socket_appender_test to make it more reliable in automated testing environments.
    • Fixed config_hot_reload_test to ensure it runs reliably across different platforms by using std::filesystem::copy.
    • Removed explicit main functions from all test cases, relying on gtest_main to simplify test code.

v4.0.2

04 Dec 14:51

Choose a tag to compare

🐞fix: Fixed an issue where the socket appender for the UDP protocol could not send logs.

v4.0.1

30 Nov 17:11

Choose a tag to compare

🐞fix: Fix data race in socket appender's exponential backoff reconnection

v4.0.0

29 Nov 16:55

Choose a tag to compare

🏆This is a significant version update

📜Release Notes/Changelog

  1. 🍄Adapted for Windows (MSVC).
  2. 🦔get_logger can retrieve the logger instance using a unique identifier name.
  3. 🐋Unused loggers are automatically released to reclaim memory.
  4. 🐝The TCP/UDP appender has been changed to the Socket Appender, which supports:
    • 🍓Specifying the log server via hostname/domain.
    • 🍒Support for IPv4 and IPv6 dual-stack.
    • 🥝When using the TCP protocol, log4cpp as a client will perform automatic reconnection and exponential backoff reconnection.
  5. 🍡There have been significant adjustments to the configuration file structure.
  6. 🎯If no configuration file is present, the built-in default configuration will be used.
  7. ⛷Further improved the stability of configuration hot-reloading (Linux only).

v3.2.1

23 Nov 15:18

Choose a tag to compare

ChangLog

  • Users can now specify a custom POSIX signal (e.g., SIGHUP) to trigger a configuration reload, instead of being strictly tied to SIGUSR2.

v3.2.0

18 Nov 12:06

Choose a tag to compare

ChangeLog

New

  1. support set the length of logger name
  2. If the automatic configuration file loading fails, the default configuration will be used instead of throwing an exception.

Bugfix

  1. fix the maximum length of the thread name cannot exceed the specified length
  2. If the name passed to set_thread_name exceeds 15 characters, it will be truncated instead of failing silently.

v3.1.0

14 Nov 14:41

Choose a tag to compare

v3.1.0

  • Fix data race issues in configuration hot-reloading under multi-threading

  • Fix errors in TCP and UDP appenders;3.Fix errors in test cases.

log4cpp v3.0.8

26 Apr 09:45

Choose a tag to compare

ChangeLog

  1. Fix CMake error

Full Changelog: v3.0.7...v3.0.8