Releases: lwhttpdorg/log4cpp
v4.0.6
log4cpp v4.0.6
This is a maintenance release focusing on build improvements, and bug fixes.
Release Date: 2026-04-02
Improvements
- File appender: When the configured log file cannot be opened, the thrown exception now includes that file path, together with the system error message and errno, so failures from wrong paths or permissions are easier to trace.
Maintenance
- Repository:
.gitignoreextended to ignore common Debian package build outputs underdebian/(debhelper, generated package trees, etc.). - Debian packaging:
debian/controlupdated —cmake (>= 3.10)in build dependencies, Homepage set to the GitHub repository, and package descriptions adjusted for consistency.
Upgrade notes
- No API or ABI changes; rebuild and redeploy as usual.
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.