This file describes the main feature changes for each InfoLogger released version.
- ScriptingAPI: added logS() and logM() aliases for the overloaded log() functions.
- Fix in infoBrowser level filtering to match documentation.
- Added documentation on the database structure.
- Added systemd install target for infoLogger services, to start them at boot time.
- Disable the javascript binding on Mac because it does not compile.
- node.js binding updated for Mac.
- Compatibility with mysql v8.
- Code cleanup (Warnings, clang-format, copyright).
- added process stdout/stderr capture and redirection to infologger
- added infoLoggerTester to check full message pipeline from client to server and database.
- added header file InfoLoggerErrorCodes.h to reference centrally the definition of error code ranges reserved specifically for each o2 module, and possibly the individual description / documentation of each error code.
- fix in infoLoggerServer threads initialization.
- newMysql.sh: no changes done if SQL settings already ok.
- infoLoggerTester: increased delay for query test.
- upgrading to Common v1.4.9, providing support for log rotate daemon logs.
- added automatic reconnection from clients to infoLoggerD
- added helper definition for typical levels (operations, support, developer, trace)
- added macros for compact writing of log commands with all fields set (severity, level, errno, source file/line). See InfoLoggerMacros.hxx.
- sourceFile field: leading path is removed to keep only short filename.
- fix in infoBrowser for level filter names
- added unsetFMQLogsToInfoLogger() function, to be called before destroying infoLogger handles used for FMQ redirection.
- added functions to discard locally (in client) messages with debug severity or high level. See filterDiscardDebug(), filterDiscardLevel() and filterReset().
- increased width of pid column in database, for machines with pid counters exceeding the usual 32765 maximum.
- added message flood protection.
- added test mode for infoLoggerAdminDB: call it without arguments to check if connection to infoLogger database works.
- added infoBrowser "-admin" command-line option to enable shortcuts to archive commands in "Archive" menu.
- infoBrowser documentation updated.
- added infoBrowser "Display" menu to save/load window geometry and filters (replaces and extends the "Filters" menu). Possibily to start infoBrowser with settings loaded from file with -prefs command-line option.
- improved DB connection failure recovery
- added infoLoggerServer debug options
- added option to reset local message queue on infoLoggerD startup
- infoLoggerServer:
- bulk insert mode (transactions).
- drop messages too long for DB.
- infoLogger API: added optional string parameter to the constructor, for custom configuration.
- increased test timeout for slow machines
- added INFOLOGGER_MODE=debug. In this mode, infoLogger library prints on stdout one line per message, with a list of comma-separated field = value pairs. Undefined fields are not shown.
- added INFOLOGGER_OPTIONS environment variable, which allows overriding some of the built-in client defaults: outputMode, outputModeFallback, verbose, floodProtection.
- doxygen doc cleanup
- Adapted to follow o2-flp conventions: renaming of executables, libraries, services, paths.
- fix reconnect timeout in stdout fallback mode (now 5s).
- API: added auto-mute feature for potentially verbose/repetitive messages. To be enabled message per message, using an AutoMuteToken (c++ only, see InfoLogger.hxx and testInfoLogger.cxx).
- minor cosmetics for auto-mute feature.
- Added option for o2-infologger-log to collect logs from a named pipe (multiple clients possible). Pipe can be created and listened to continuously. e.g.
o2-infologger-log -f /tmp/log-pipe -c -l
. - API:
- Added InfoLoggerContext light copy constructor, with fields overwrite. See example use in <../test/testInfoLogger.cxx>.
- Added possibility to use an AutoMuteToken in the c++ stream operator.
- Added getMessageCount() / resetMessageCount() to keep track of count of messages, by severity.
- Added a cleanup/retry in case of corrupted cache of infoLoggerD, to allow immediate restart. The corrupted files are saved and available for later debugging.
- Do not count number of messages for large tables (>5M rows) in Archive Select menu. Would otherwise be very long.
- infoBrowser configuration: added parameter "queryLimit" to change the maximum number of messages returned by a query. Default is 10000.
- changed algorithm of DB threads message distribution, now based on timestamp to help keeping multi-line split messages in same order.
- added InfoLogger::filterDiscardSetFile(), to allow saving to local file the messages that would be discarded with filterDiscard(...) settings.
- do not try to log to file if the path is empty.
- added optional parameter to InfoLogger::filterDiscardSetFile(), to ignore debug messages when set.
- Common/SimpleLog update: fiterDiscardSetFile / rotateMaxFiles parameter: If one, a single file is created and cleared immediately, and messages are discarded after reaching rotateMaxBytes.
- Updated InfoLoggerFMQ.hxx with new FMQ severities.
- Updated SWIG version requirement to allow generation of Python3 bindings.
- Added functions to keep a history of latest log messages: see historyReset() and historyGetSummary().
- Added function to register error codes descriptions to format message summaries in history.
- o2-infologger-adminDb:
- added interactive confirmation prompt when clearing/deleting non-empty tables, unless option '-o noWarning' is set.
- added command '-c status' to display status information about infoLogger database content (number of tables, number of rows, data size).
- o2-infologger-daemon: improved handling of large number of connections.
- fixed message flood of "accept() failed" errors when reaching maximum number allowed file descriptors. A single message is now reported when condition occurs, and then when it is cleared. Reaching system limits of max number of descriptors is now handled gracefuly and recovers fine. NB: loop of accept() failures was still occuring even after remote process dead, because fds content are buffered to avoid message loss.
- upgraded to o2-Common v1.6.3, which fixes unclosed file descriptor when rotating log files (which was contributing to trigger issue above, increasing number of fds in use).
- added startup checks to verify compatibility of rxMaxConnections with max number of file descriptors allowed by system. If needed, tries to increase the limit. If it does not work, rxMaxConnections is automatically reduced to a lower value.
- increased default value of rxMaxConnections from 1024 to 2048. This is the number of concurrent clients allowed to connect to o2-infologger-daemon. Can be changed in configuration file.
- o2-infologger-server: improved logging per thread/database.
- o2-infologger-newdb: added option to skip user creation
- o2-infologger-daemon: removed limitation of 1024 connections (was because of hard limit in select() system call, replaced now by poll()).