Releases: lwhttpdorg/log4cpp
v4.0.5
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.shand.clang-tidyfor static checking via clang-tidy - Added build scripts:
build-deb.shandbuild-rpm.shfor easier DEB/RPM packaging - Improved code coverage: new CMake option
ENABLE_LOG4CPP_COVERAGEfor coverage measurement on GNU platforms
🐛 Bug Fixes
- Fixed: Prevent exceptions from
std::filesystem::existswhen 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
READMEand 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
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
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::loggerto 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 likelogger_manager,supervisor, and thelogger_proxy. - Improved Hot-Reload Documentation: The
README_ZH.mdfile 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_lockwithout template arguments (C++17 feature) and improving platform-specific code handling inCMake.
- Appenders are created on demand: Appenders configured in
appendersbut not referenced inloggerswill 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_testto make it more reliable in automated testing environments. - Fixed
config_hot_reload_testto ensure it runs reliably across different platforms by usingstd::filesystem::copy. - Removed explicit
mainfunctions from all test cases, relying ongtest_mainto simplify test code.
- Addressed a potential race condition in
v4.0.2
🐞fix: Fixed an issue where the socket appender for the UDP protocol could not send logs.
v4.0.1
🐞fix: Fix data race in socket appender's exponential backoff reconnection
v4.0.0
🏆This is a significant version update
📜Release Notes/Changelog
- 🍄Adapted for Windows (MSVC).
- 🦔
get_loggercan retrieve the logger instance using a unique identifiername. - 🐋Unused loggers are automatically released to reclaim memory.
- 🐝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.
- 🍡There have been significant adjustments to the configuration file structure.
- 🎯If no configuration file is present, the built-in default configuration will be used.
- ⛷Further improved the stability of configuration hot-reloading (Linux only).
v3.2.1
ChangLog
- Users can now specify a custom POSIX signal (e.g.,
SIGHUP) to trigger a configuration reload, instead of being strictly tied toSIGUSR2.
v3.2.0
ChangeLog
New
- support set the length of logger name
- If the automatic configuration file loading fails, the default configuration will be used instead of throwing an exception.
Bugfix
- fix the maximum length of the thread name cannot exceed the specified length
- If the name passed to set_thread_name exceeds 15 characters, it will be truncated instead of failing silently.
v3.1.0
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.