All notable changes to stumpless will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
For a detailed look at the project's future, including planned features and bug fixes, check out the roadmap.
- Deadlock potential in
stumpless_set_entry_hostname
andstumpless_set_entry_procid
when validation fails. - Builds in ANSI C environments.
- Custom function logging targets.
- Localizations for:
- Bengali (bn-IN 🇮🇳)
- Chinese (zh-CN 🇨🇳)
- Czech (cz-CZ 🇨🇿)
- Hindi (hi-IN 🇮🇳)
- Polish (pl-PL 🇵🇱)
- Portuguese (pt-BR 🇧🇷)
- Spanish (es-ES 🇪🇸)
- Systemd journal logging targets (journald).
- Log source file tracing functions:
stump_trace
stumpless_trace_entry
stumpless_trace_log
stumpless_trace_message
stumplog_trace
vstump_trace
vstumpless_trace_log
vstumpless_trace_message
vstumplog_trace
- The TRACE log level severity shorthand function macros:
stump_t
stump_t_entry
stump_t_log
stump_t_message
stumplog_t
- Macro
STUMPLESS_SEVERITY_TRACE_VALUE
as an alias forSTUMPLESS_SEVERITY_DEBUG_VALUE
. - Macro
STUMPLESS_SEVERITY_TRACE
for the new level as an alias for theSTUMPLESS_SEVERITY_DEBUG
enum member. - Runtime filtering mechanism, as well as default support for log masks, via
the following functions:
stumpless_get_target_filter
stumpless_get_target_mask
stumpless_mask_filter
stumpless_set_target_filter
stumpless_set_target_mask
stumplog_set_mask
- Safer and more performant
_str
versions of any function taking a format specifier string and variable number of arguments. - Default Windows Event Log messages that can be used when none are specified.
- Full unicode support with Windows Event Log targets, along with the following
new functions:
stumpless_add_default_wel_event_source
stumpless_add_wel_event_source
stumpless_add_wel_event_source_w
stumpless_get_wel_category
stumpless_get_wel_event_id
stumpless_get_wel_insertion_param
stumpless_get_wel_insertion_string_w
stumpless_get_wel_type
stumpless_remove_default_wel_event_source
stumpless_remove_wel_event_source
stumpless_remove_wel_event_source_w
stumpless_set_wel_insertion_string_w
stumpless_set_wel_insertion_strings_w
vstumpless_set_wel_insertion_strings_w
STUMPLESS_OPTION_CONS
is now supported with similar semantics toLOG_CONS
fromsyslog.h
.- The procid and hostname can be overriden if the defaults are not wanted, via
the functions:
stumpless_get_entry_hostname
stumpless_get_entry_procid
stumpless_set_entry_hostname
stumpless_set_entry_procid
- Other new functions:
stumpless_get_network_protocol
stumpless_get_target_type_string
stumpless_get_transport_protocol
- Auto-generated local socket names use abstract socket names if supported.
- Auto-generated local socket names are always
stumpless-socket
instead of being generated usingmkstemp
.
stumpless_perror
segmentation faults after the following errors:STUMPLESS_FILE_OPEN_ERROR
STUMPLESS_FILE_WRITE_ERROR
STUMPLESS_INVALID_ID
STUMPLESS_MEMORY_ALLOCATION_FAILURE
STUMPLESS_NETWORK_PROTOCOL_UNSUPPORTED
STUMPLESS_STREAM_WRITE_FAILURE
STUMPLESS_TRANSPORT_PROTOCOL_UNSUPPORTED
STUMPLESS_WINDOWS_EVENT_LOG_CLOSE_FAILURE
STUMPLESS_WINDOWS_EVENT_LOG_OPEN_FAILURE
- Several memory leaks:
- Object cache leak in some allocation failure scenarios
- Creating network target with unsupported protocols
close
syscall is no longer called on invalid socket handles- TCP network targets do not hang when the session is closed by the receiver.
- Localization framework for error messages and other library strings, and
localizations for:
- French (fr-FR 🇫🇷)
- German (de-DE 🇩🇪)
- Italian (it-IT 🇮🇹)
- Slovak (sk-SK 🇸🇰)
- Swedish (sv-SE 🇸🇪)
- Thread safety for all functionality.
- The following functions:
stumpless_free_thread
stumpless_get_element_count
stumpless_get_target_name
stumpless_get_target_default_app_name
stumpless_get_target_default_msgid
stumpless_param_to_string
stumpless_read_buffer
- The following C++ function bindings:
Entry.GetAppName
Entry.GetMessage
Entry.GetMsgid
Version.Compare
- C++ namespace from
stumplesscpp
tostumpless
. - Including
stumpless/config.h
no longer definesWIN32_LEAN_AND_MEAN
. - Facilities, options, and severities are now only available in the
stumpless/facility.h
,stumpless/option.h
, andstumpless/severity.h
headers, respectively. - Functions that return strings now require the caller to free the string
when it is no longer needed. Prior to this version these strings pointed
to internal character buffers that could not be modified. The functions
affected by this are:
stumpless_get_element_name
stumpless_get_entry_app_name
stumpless_get_entry_message
stumpless_get_entry_msgid
stumpless_get_entry_param_value_by_index
stumpless_get_entry_param_value_by_name
stumpless_get_param_name
stumpless_get_param_name_by_index
stumpless_get_param_value
stumpless_get_param_value_by_index
stumpless_get_param_value_by_name
- The underlying buffer in buffer targets should no longer be read manually,
but should instead use the new
stumpless_read_buffer
function as the only way to read messages. - All target open functions no longer require an options or default facility
parameter, resulting in much more concise code. If either of these fields
need to be adjusted on a target, use the
stumpless_set_option
andstumpless_set_default_facility
functions after the target has been created. - Facilities and severities are now
enum
s instead of preprocessor symbols.
stumpless_destroy_entry
has been deprecated in favor of the more descriptive and deliberatestumpless_destroy_entry_and_contents
andstumpless_destroy_entry_only
functions in order to avoid unintentional memory leaks and use-after-free mistakes.stumpless_destroy_element
has been deprecated in favor of the more descriptive and deliberatestumpless_destroy_element_and_contents
andstumpless_destroy_element_only
functions in order to avoid unintentional memory leaks and use-after-free mistakes.
- Memory leak in opening of network targets on systems using
sys/socket.h
for network services.
stumpless
andvstumpless
functions (usestump
andvstump
instead).STUMPLESS_SEVERITY_WARN
symbol.
- A number of new functions for working with entries, elements, and params.
- A rollup header,
stumpless.hpp
, for the C++ library to make use easier. - Logging functions that can be removed at compile time.
- Added missing DLL exports of C++ library in standard Visual Studio builds.
- Local socket names are generated using mkstemp instead of using a static counter (issue #54]).
- The current target is not left pointing at an invalid target structure after the current target is closed (issue #52).
stumpless_version_to_string
function.- Header check enforcement in CI pipeline.
- C++ library bindings generated by Wrapture.
- Several portability issues:
- Build failure in MinGW and Cygwin
- Conflicting header inclusions
- Missing headers
- Missed code in configuration-specific source files
- Missing error checks
- Format specifier support for messages and entries.
- Generic stumpless_close_target function.
- Example and documentation of file targets.
- Example and documentation of socket targets.
- Functions that can replace syslog and vsyslog (stumplog and vstumplog).
- Default targets specific to the platform.
- Memory leak where error structures are not freed by stumpless_free_all.
- Missing error generation for socket logging.
- Network examples are no longer run by the examples build target.
- Code duplication in network target code.
- Install target and documentation.
- Memory leak controlled with stumpless_free_all function.
- Vision statement.
- STUMPLESS_OPTION_NONE for code readability.
- stumpless_perror function.
- Network target capability.
- Various memory leaks.
- Increased coverage on object cache.
- Support for fractional timestamps.
- File target capability.
- Windows Event Log target capability.
- Doxygen documentation support.
- Tests for unsupported targets.
- Stream target capability.
- Use of unsafe fopen when fopen_s is available.
- Use of unsafe gmtime function when gmtime_r is available.
- Safely convert from size_t to int types.
- Inclusion of RFC 5424 test sources in multiple executables, using an object library instead.
- Specify googletest release 1.8.1 to fix broken builds.
- Add SonarCloud quality gate badge to README.
- Benchmark tests measure the amount of memory allocated.
- Add
stumpless_set_entry_message
function. - Integration with SonarCloud for analysis.
- Removed versions prior to 1.0.0 to match repository history.
- Benchmark tests now function properly.
- Memory efficiency improved significantly.
- Add socket target capability.
- Add buffer target capability.
- Add Travis CI integration.
- Add AppVeyor integration.
- Add Google Test suites.
- Add Google Benchmark capability.