[v19,00/15] Logging unification and improvements

Message ID 20240330030429.4630-1-stephen@networkplumber.org (mailing list archive)
Headers
Series Logging unification and improvements |

Message

Stephen Hemminger March 30, 2024, 3 a.m. UTC
  Improvements and unification of logging library.
This version works on all platforms: Linux, Windows and FreeBSD.

This is update to rework patch set. It adds several new features
to the console log output.

  * Putting a timestamp on console output which is useful for
    analyzing performance of startup codes. Timestamp is optional
    and must be enabled on command line.

  * Displaying console output with colors.
    It uses the standard conventions used by many other Linux commands
    for colorized display.  The default is to enable color if the
    console output is going to a terminal. But it can be always
    on or disabled by command line flag. This default was chosen
    based on what dmesg(1) command does.

    Color is used by many tools (vi, iproute2, git) because it is helpful;
    DPDK drivers and libraries print lots of not very useful messages.
    And having error messages highlighted in bold face helps.
    This might also get users to pay more attention to error messages.
    Many bug reports have earlier messages that are lost because
    there are so many info messages.

  * Add support for automatic detection of systemd journal
    protocol. If running as systemd service will get enhanced
    logging.

  * Use of syslog is optional and the meaning of the
    --syslog flag has changed. The default is *not* to use
    syslog. 

Add myself as maintainer for log because by now have added
more than previous authors...

v19 - split log outputs into seperate files, which makes
      it more OO and cleaner.
    - make journal log configurable (mostly for testing)

Stephen Hemminger (15):
  maintainers: add for log library
  windows: make getopt functions have const properties
  windows: add os shim for localtime_r
  windows: common wrapper for vasprintf and asprintf
  eal: make eal_log_level_parse common
  eal: do not duplicate rte_init_alert() messages
  eal: change rte_exit() output to match rte_log()
  log: move handling of syslog facility out of eal
  eal: initialize log before everything else
  log: drop syslog support, and make code common
  log: add hook for printing log messages
  log: add timestamp option
  log: add optional support of syslog
  log: add support for systemd journal
  log: colorize log output

 MAINTAINERS                                   |   1 +
 app/test/test_eal_flags.c                     |  64 +++++-
 doc/guides/linux_gsg/linux_eal_parameters.rst |  27 ---
 doc/guides/prog_guide/log_lib.rst             |  71 ++++++
 drivers/bus/pci/pci_common.c                  |  32 ---
 lib/eal/common/eal_common_debug.c             |  11 +-
 lib/eal/common/eal_common_options.c           | 137 ++++++-----
 lib/eal/common/eal_options.h                  |   7 +
 lib/eal/common/eal_private.h                  |  10 -
 lib/eal/freebsd/eal.c                         |  64 ++----
 lib/eal/linux/eal.c                           |  68 ++----
 lib/eal/windows/eal.c                         |  77 +------
 lib/eal/windows/getopt.c                      |  23 +-
 lib/eal/windows/include/getopt.h              |   8 +-
 lib/eal/windows/include/rte_os_shim.h         |  58 +++++
 lib/log/log.c                                 |  87 ++++---
 lib/log/log_color.c                           | 160 +++++++++++++
 lib/log/log_freebsd.c                         |  12 -
 lib/log/log_internal.h                        |  28 ++-
 lib/log/log_journal.c                         | 216 ++++++++++++++++++
 lib/log/log_linux.c                           |  61 -----
 lib/log/log_private.h                         |  34 +++
 lib/log/log_stubs.c                           |  34 +++
 lib/log/log_syslog.c                          |  89 ++++++++
 lib/log/log_timestamp.c                       | 204 +++++++++++++++++
 lib/log/log_windows.c                         |  18 --
 lib/log/meson.build                           |  14 +-
 lib/log/version.map                           |   5 +-
 28 files changed, 1172 insertions(+), 448 deletions(-)
 create mode 100644 lib/log/log_color.c
 delete mode 100644 lib/log/log_freebsd.c
 create mode 100644 lib/log/log_journal.c
 delete mode 100644 lib/log/log_linux.c
 create mode 100644 lib/log/log_private.h
 create mode 100644 lib/log/log_stubs.c
 create mode 100644 lib/log/log_syslog.c
 create mode 100644 lib/log/log_timestamp.c
 delete mode 100644 lib/log/log_windows.c