コンテンツにスキップ

LOGGER テーブル

概要

LOGGER テーブルは、SONiC の各デーモン(orchagentsyncd 等)および SAI API コンポーネント(SAI_API_*)のログ verbosity と出力先を CONFIG_DB に保持する1。各プロセスは起動時に Logger::linkToDbNative() / linkToDb() で自分のエントリを DB に登録し、以降 settingThread がテーブル変更を購読してリアルタイムに loglevel を変更する。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>LOGGER")]
  DM["各デーモン (settingThread)"]
  SAI["syncd / SAI_API_*"]
  CDB --> DM
  CDB --> SAI

凡例

CONFIG_DB から各デーモンへの典型経路。詳細・例外は本ページ本文を参照。

key 構造

LOGGER|<component>

<component> はコンポーネント名(例: orchagentsyncdSAI_API_LAG)。SAI コンポーネントは SAI_API_ プレフィクスを持つ。

フィールド

フィールド デフォルト 説明
LOGLEVEL enum (swss または SAI) NOTICE / SAI_LOG_LEVEL_NOTICE ログ verbosity。swss コンポーネント: EMERG/ALERT/CRIT/ERROR/WARN/NOTICE/INFO/DEBUG。SAI コンポーネント: SAI_LOG_LEVEL_CRITICAL/ERROR/WARN/NOTICE/INFO/DEBUG
LOGOUTPUT enum SYSLOG/STDOUT/STDERR SYSLOG ログ出力先。YANG default SYSLOG
require_manual_refresh boolean なし(省略可) true の場合、loglevel 変更に SIGHUP が必要。未設定時は false 相当

コード由来デフォルト (Phase A)

LOGLEVEL

  • swss コンポーネント: デフォルト "NOTICE"
  • 根拠: sonic-swss-common/common/loglevel.h:4#define DEFAULT_LOGLEVEL "NOTICE"
  • logger.cpp:linkToDbNative() のデフォルト引数: const char * defPrio="NOTICE"2
  • DB に LOGLEVEL キーが存在しない場合、defPrio の値でエントリを初期書き込みする(logger.cpp:132-149
  • SAI コンポーネント (SAI_API_*): デフォルト "SAI_LOG_LEVEL_NOTICE"
  • 根拠: sonic-swss-common/common/loglevel.h:5#define SAI_DEFAULT_LOGLEVEL "SAI_LOG_LEVEL_NOTICE"
  • swssloglevel -d 実行時は全 SAI コンポーネントを SAI_LOG_LEVEL_NOTICE にリセット(loglevel.cpp:168-169
  • invalid 値フォールバック: 未知の文字列が書き込まれた場合、swssPrioNotify()"NOTICE" にフォールバックしてエラーログを出力(logger.cpp:83-84

LOGOUTPUT

  • デフォルト: "SYSLOG"
  • 根拠 (コード): logger.cpp:161linkToDb()linkToDbWithOutput(...) に固定値 "SYSLOG" を渡す
  • 根拠 (YANG): sonic-logger.yang:69default SYSLOG;
  • 内部初期値: logger.h:162std::atomic<Output> m_output = { SWSS_SYSLOG };
  • invalid 値フォールバック: 未知の文字列が書き込まれた場合、swssOutputNotify()SWSS_SYSLOG にフォールバック(logger.cpp:105-106

require_manual_refresh

  • YANG に default 節なし
  • settingThreadLOGLEVEL/LOGOUTPUT のみ購読し、require_manual_refresh を直接読むコードは sonic-swss-common 内に確認できない
  • 未設定時は false 相当(SIGHUP 不要)として動作する

制約

  • LOGLEVELmandatory true(YANG)。エントリ作成時に必須
  • swss コンポーネントと SAI コンポーネントで loglevel の enum 型が異なる(swss_loglevel vs sai_loglevel
  • swssloglevel ツール(-s フラグ)で SAI コンポーネントを区別して操作可能

購読者

  • 各デーモン (orchagentsyncd 等): Logger::settingThread()CFG_LOGGER_TABLE_NAMESubscriberStateTable で購読し、LOGLEVEL/LOGOUTPUT 変更をリアルタイム反映
  • swssloglevel コマンド: sonic-swss-common/common/loglevel.cpp — CLI から LOGGER テーブルを直接書き込む

関連 CONFIG_DB / YANG / CLI

  • 関連 YANG: sonic-logger
  • 関連 CLI: swssloglevel -l <level> -c <component>swssloglevel -p(登録済みコンポーネント一覧)

関連リファレンス

引用元