log
スキーマ、モデルまたはロガーを指定してログを検索します。検索対象テーブルは指定した条件に該当するロガーの保存テーブルから自動的に決定されるため、テーブル名を直接知らなくてもログを照会できます。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | 加工クエリ |
| 必要な権限 | テーブル読み取り権限 |
| ライセンス使用量 | 該当なし |
| 並列実行 | 非対応 |
| 分散実行 | データノードで実行(mapper) |
構文
SEARCH_EXPR- 検索条件式(任意)。フィールド比較演算子(
==、!=、<、<=、>、>=)と論理演算子(and、or、not)でフィールド値の条件を組み合わせます。例:src_ip == "203.0.113.10" and dst_port == 443。range()、iprange()などの索引検索関数も使用できます。省略すると条件なしで対象テーブルのすべてのログを返します。
オプション
schema=STR(必須)- 検索するログスキーマコード。登録されていないコードを指定するとエラー(300149)が発生します。
duration=INT{s|m|h|d|mon}- 現在時刻から一定の時間範囲以内のログに限定します。
s(秒)、m(分)、h(時)、d(日)、mon(月)単位を使用します。例えば10sは現在時刻から10秒前までの範囲を意味します。fromオプションを併用した場合はfromの値が優先されます。 from=DATE- 照会範囲の開始時刻。
yyyyMMddHHmmss形式で入力し、末尾の桁を省略すると0で埋められます。 to=DATE- 照会範囲の終了時刻。
yyyyMMddHHmmss形式で入力し、末尾の桁を省略すると0で埋められます。 model=STR- 検索対象を絞り込むロガーモデルのGUIDまたは名前。カンマで区切って複数指定できます。
sourceオプションと同時に使用できません。 source=STR- 検索対象を絞り込むロガーのGUIDまたは名前。カンマで区切って複数指定できます。
modelオプションと同時に使用できません。 alias=BOOL- スキーマに定義されたフィールド名を表示名に変換するかどうか(デフォルト:
f)。tまたはtrueを指定すると有効化します(大文字小文字を区別)。
入力フィールド
なし(クエリプランナーが実行前に必ず table または fulltext コマンドに置き換えるため、log コマンド自体は実行されません)
出力フィールド
なし。書き換えられた table または fulltext コマンドが対象テーブルに保存されたフィールドをそのまま出力します。alias=t でスキーマにフィールドが定義されている場合はフィールド名が表示名に変わりスキーマに定義されたフィールドのみが残り、alias を指定しない場合はフィールド名はそのままで _table フィールドを先頭に配置した後、スキーマに定義されたフィールド順にその後ろへ再配置します(それ以外のフィールドは後方に維持されます)。
エラーコード
パースエラー
| エラーコード | メッセージ | 説明 |
|---|---|---|
| 300148 | Schema option is required. | schema オプションを指定していない場合 |
| 300149 | Log schema not found. | schema オプション値に該当するログスキーマがない場合 |
| 300150 | Cannot specify both model and source options. | model と source オプションを同時に指定した場合 |
| 300151 | Unexpected term in search expression. | 検索条件式に予期しないトークンがある場合 |
| 300152 | Unparsed tokens remain in search expression. | 検索条件式のパース後に処理されなかったトークンが残っている場合 |
| 300153 | Parentheses do not match in search expression. | 検索条件式の小括弧の対応が取れていない場合 |
| 300154 | Quotes do not match in search expression. | 検索条件式の引用符の対応が取れていない場合 |
| 300155 | Square brackets do not match in search expression. | 検索条件式の大括弧の対応が取れていない場合 |
| 300156 | Invalid escape sequence in search expression. | 検索条件式に不正なエスケープシーケンスがある場合 |
| 300157 | Unsupported expression type in search condition. | 演算子のない単一識別子のみの入力など、対応していない式を使用した場合 |
| 300158 | Unsupported operator in search expression. | 検索条件式に対応していない演算子を使用した場合 |
| 300159 | Malformed search expression. | その他、検索条件式の形式が正しくない場合 |
ランタイムエラー
該当なし
説明
log コマンドはログスキーマ、ロガーモデル、ロガーの3つの方式で検索対象テーブルを決定します。
modelオプションを指定すると、そのロガーモデルにschemaオプションと一致する抽出器(extractor)が1つでもあるかをモデル単位で判定します。一致する抽出器があれば、そのモデルを使用するすべてのロガーのテーブルを対象とし(ロガーごとに抽出器を再照合しない)、なければそのモデルは対象から除外されます。sourceオプションを指定すると、そのロガーのテーブルを対象とします。- どちらも指定しない場合は、
schemaオプションと一致するログスキーマを使用するすべてのロガーのテーブルを対象とします。
対象テーブルが1つもない場合(例: 条件に合うロガーがない場合)はエラーなしで空の結果を返します。schema オプションはコマンドをパースする時点で存在有無を検査しますが(300149)、実行直前にクエリプランナーが書き換える時点でもう一度スキーマを照会します。この時点でスキーマが見つからない場合(例: パース後にスキーマが削除された場合)はエラーを発生させずに空の結果を返します。
log コマンドは実行されず、クエリプランナー(LogCommandRewritingPlanner)が必ず次の2つの形態のいずれかに置き換えた後、そのコマンドが実際に実行されます。
schema=sessionで検索条件式を指定していない場合: 対象テーブルに対するtableコマンドに置き換え、後ろにsearch _schema == "session"条件を追加します。- それ以外の場合(検索条件式を指定した、または
sessionスキーマでない場合): 検索条件式と_schema条件を結合したfulltextコマンドに置き換えます。
このように書き換えられた table または fulltext コマンドが実際に実行されるため、テーブル読み取り権限は log コマンド自体ではなく、書き換えられたコマンドの実行レイヤーで強制されます。 fulltext に書き換えられる場合と table に書き換えられる場合のいずれも、読み取り権限のないテーブルはエラーなしで検索対象から静かに除外されます。権限のないテーブルのログは結果に表れませんがエラーメッセージは表示されないため、結果が空または想定より少ない場合は対象テーブルの読み取り権限を先に確認してください。アカウント別のテーブル読み取り権限の付与状況は sonar-users の granted_tables 出力フィールドで確認できます。
使用例
-
スキーマのみを指定して検索
log schema="session"sessionスキーマを使用するすべてのロガーの最近のログを検索します。 -
期間と検索条件式を指定して検索
log schema="session" duration=1h src_ip == "203.0.113.10"直近1時間以内に収集された
sessionスキーマログのうち、送信元IPが203.0.113.10のログのみを検索します。 -
特定のロガーに範囲を絞って検索
log schema="session" source="fw-edge-01" from=20260801 to=20260802fw-edge-01ロガーが収集したsessionスキーマログのうち、2026年8月1日の1日分だけを検索します。 -
フィールド表示名に変換して検索
log schema="session" alias=t duration=1d直近1日間の
sessionスキーマログを検索し、フィールド名をスキーマに定義された表示名に変換してスキーマに定義されたフィールドのみを返します。
変更履歴
log コマンドはSonar 4.0.2609.0バージョンから利用可能です。Experimental アプリが提供していたコマンドをSonarコアに内蔵したものです。内蔵されていないバージョンでは、Experimental アプリをインストールして使用できます。