sonic-buildimage icon indicating copy to clipboard operation
sonic-buildimage copied to clipboard

Enable runtime config log level

Open Junchao-Mellanox opened this issue 1 year ago • 19 comments

HLD link: https://github.com/sonic-net/SONiC/pull/1522

Why I did it

SONiC provides two Python logger implementations: sonic_py_common.logger.Logger and sonic_py_common.syslogger.SysLogger. Both of them do not provide the ability to change log level at real time. Sometimes, in order to get more debug information, developer has to manually change the log level in code on a running switch and restart the Python daemon. This is not convenient.

SONiC also provides a C/C++ logger implementation in sonic-platform-common.common.logger.cpp. This C/C++ logger implementation is also a wrapper of Linux standard syslog which is widely used by swss/syncd. It provides the ability to set log level on fly by starting a thread to listen to CONFIG DB LOGGER table change. SONiC infrastructure also provides the Python wrapper for sonic-platform-common.common.logger.cpp which is swsscommon.Logger. However, this logger implementation also has some drawbacks:

  1. swsscommon.Logger assumes redis DB is ready to connect. This is a valid assumption for swss/syncd. But it is not good for a Python logger implementation because some Python script may be called before redis server starting.
  2. swsscommon.Logger wraps Linux syslog which only support single log identifier for a daemon.

So, swsscommon.Logger is not an option too.

This PR is a Python logger enhancement which allows user setting log level at run time.

Work item tracking
  • Microsoft ADO (number only):

How I did it

swsscommon.Logger depends on a thread to listen to CONFIG DB LOGGER table change. It refreshes log level for each logger instances once the thread detects a DB entry change. A thread is considered heavy in a python script, especially that there are many short and simple python scripts which also use logger. To keep python logger light weight, it uses a different design than swsscommon.Logger:

  • A class level logger registry shall be added to SysLoggerclass
  • Each logger instance shall register itself to logger register if enables runtime configuration
  • Logger configuration shall be refreshed by CLI which send a SIGHUP signal to the daemon

How to verify it

Manual test New unit test cases

Which release branch to backport (provide reason below if selected)

  • [ ] 201811
  • [ ] 201911
  • [ ] 202006
  • [ ] 202012
  • [ ] 202106
  • [ ] 202111
  • [ ] 202205
  • [ ] 202211
  • [ ] 202305

Tested branch (Please provide the tested image version)

  • [ ]
  • [ ]

Description for the changelog

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

Junchao-Mellanox avatar Jul 18 '24 02:07 Junchao-Mellanox

Hi @xincunli-sonic , we had a offline discussion about the multi asic issue. I have already updated the CLI to handle multi ASIC configuration, that part is not in this PR. Could you please review and sign off this one?

Junchao-Mellanox avatar Aug 07 '24 06:08 Junchao-Mellanox

/azpw run ms_checker

Junchao-Mellanox avatar Aug 07 '24 06:08 Junchao-Mellanox

/AzurePipelines run ms_checker

mssonicbld avatar Aug 07 '24 06:08 mssonicbld

No pipelines are associated with this pull request.

azure-pipelines[bot] avatar Aug 07 '24 06:08 azure-pipelines[bot]

/azpw ms_conflict -f

liushilongbuaa avatar Aug 08 '24 10:08 liushilongbuaa

/azpw run Azure.sonic-buildimage

Junchao-Mellanox avatar Aug 15 '24 01:08 Junchao-Mellanox

/AzurePipelines run Azure.sonic-buildimage

mssonicbld avatar Aug 15 '24 01:08 mssonicbld

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Aug 15 '24 01:08 azure-pipelines[bot]

@Junchao-Mellanox can you point to the HLD link in the PR description?

prgeor avatar Aug 26 '24 00:08 prgeor

@Junchao-Mellanox can you point to the HLD link in the PR description?

Added

Junchao-Mellanox avatar Aug 27 '24 02:08 Junchao-Mellanox

/azpw run Azure.sonic-buildimage

Junchao-Mellanox avatar Aug 28 '24 07:08 Junchao-Mellanox

/AzurePipelines run Azure.sonic-buildimage

mssonicbld avatar Aug 28 '24 07:08 mssonicbld

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Aug 28 '24 07:08 azure-pipelines[bot]

/azpw run Azure.sonic-buildimage

Junchao-Mellanox avatar Sep 03 '24 11:09 Junchao-Mellanox

/AzurePipelines run Azure.sonic-buildimage

mssonicbld avatar Sep 03 '24 11:09 mssonicbld

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Sep 03 '24 11:09 azure-pipelines[bot]

/azpw run Azure.sonic-buildimage

Junchao-Mellanox avatar Sep 06 '24 02:09 Junchao-Mellanox

/AzurePipelines run Azure.sonic-buildimage

mssonicbld avatar Sep 06 '24 02:09 mssonicbld

Azure Pipelines successfully started running 1 pipeline(s).

azure-pipelines[bot] avatar Sep 06 '24 02:09 azure-pipelines[bot]

Hi @liat-grozovik , could you please help merge?

Junchao-Mellanox avatar Oct 11 '24 05:10 Junchao-Mellanox

Hi @qiluo-msft , could you please help merge this PR? All reviewers have approved the PR.

Junchao-Mellanox avatar Oct 23 '24 08:10 Junchao-Mellanox