log_filter_internal
ログフィルタコンポーネントは、エラーイベントの優先度およびエラーコードに基づいた単純な形式のログフィルタリングを実装します。 log_filter_internal
がエラーログ用のエラー、警告および情報イベントを許可または抑制する方法に影響を与えるには、log_error_verbosity
および log_error_suppression_list
システム変数を設定します。
log_filter_internal
は組込みで、デフォルトで有効になっています。 このフィルタが無効になっている場合、log_error_verbosity
および log_error_suppression_list
は効果がないため、必要に応じて、かわりに別のフィルタサービスを使用してフィルタリングを実行する必要があります (たとえば、log_filter_dragnet
を使用している場合は個々のフィルタルールを使用します)。 フィルタ構成の詳細は、セクション5.4.2.1「エラーログ構成」 を参照してください。
エラーログを対象としたイベントの優先度は、ERROR
、WARNING
または INFORMATION
です。 log_error_verbosity
システム変数は、次のテーブルに示すように、ログに書き込まれるメッセージに対して許可する優先度に基づいて冗長性を制御します。
log_error_verbosity 値 | 許可されたメッセージの優先度 |
---|---|
1 | ERROR |
2 |
ERROR , WARNING
|
3 |
ERROR , WARNING , INFORMATION
|
log_error_verbosity
が 2 以上の場合、サーバーはステートメントベースのロギングに安全でないステートメントに関するメッセージをログに記録します。 値が 3 の場合、サーバーは中断された接続および新しい接続試行のアクセス拒否エラーをログに記録します。 セクションB.3.2.9「通信エラーおよび中止された接続」を参照してください。
レプリケーションを使用する場合は、ネットワーク障害や再接続に関するメッセージなど、発生していることに関する詳細情報を取得するために、2 以上の log_error_verbosity
値をお薦めします。
レプリカで log_error_verbosity
が 2 以上の場合、レプリカはエラーログにメッセージを出力して、ジョブを開始するバイナリログおよびリレーログ座標、別のリレーログへの切替え時、切断後の再接続時など、そのステータスに関する情報を提供します。
冗長性フィルタリングの対象ではない SYSTEM
のメッセージ優先度もあります。 log_error_verbosity
の値に関係なく、エラー以外の状況に関するシステムメッセージがエラーログに出力されます。 これらのメッセージには、起動メッセージと停止メッセージ、および設定に対する重要な変更が含まれます。
MySQL エラーログでは、システムメッセージに 「System」 というラベルが付けられます。 他のログシンクは同じ規則に従っている場合と従っていない場合があり、結果のログでは、「「ノート」」や「「情報」」などの情報優先度レベルに使用されるラベルがシステムメッセージに割り当てられる場合があります。 メッセージのラベル付けに基づいてロギングに追加のフィルタリングまたはリダイレクトを適用した場合、システムメッセージはフィルタをオーバーライドしませんが、他のメッセージと同じ方法で処理されます。
log_error_suppression_list
システム変数は、エラーログを対象としたイベントに適用され、WARNING
または INFORMATION
の優先度で発生した場合に抑制するイベントを指定します。 たとえば、特定のタイプの警告が頻繁に発生するが関心がないためにエラーログで望ましくない「「ノイズ」」とみなされる場合は、抑止できます。log_error_suppression_list
では、優先度が ERROR
または SYSTEM
のメッセージは抑制されません。
log_error_suppression_list
値には、抑制しない場合は空の文字列、抑制するエラーコードを示すカンマ区切り値のリストを指定できます。 エラーコードはシンボリックまたは数値形式で指定できます。 数値コードは、MY-
接頭辞の有無にかかわらず指定できます。 数値部分の先頭のゼロは重要ではありません。 許可されているコード形式の例:
ER_SERVER_SHUTDOWN_COMPLETE
MY-000031
000031
MY-31
31
読みやすく移植性を高めるために、シンボリック値は数値よりも優先されます。
抑制されるコードはシンボリックまたは数値形式で表現できますが、各コードの数値は許可された範囲内である必要があります:
1 から 999: サーバーおよびクライアントによって使用されるグローバルエラーコード。
10000 以上: エラーログに書き込まれるサーバーエラーコード (クライアントには送信されません)。
また、指定した各エラーコードは、実際には MySQL で使用する必要があります。 許可された範囲内または許可された範囲内にないが、MySQL で使用されていないコードを指定しようとすると、エラーが発生し、log_error_suppression_list
値は変更されません。
エラーコードの範囲と、各範囲内で定義されているエラー記号および番号の詳細は、セクションB.1「エラーメッセージのソースと要素」 および MySQL 8.0 Error Message Reference を参照してください。
サーバーは、特定のエラーコードのメッセージを異なる優先度で生成できるため、log_error_suppression_list
にリストされているエラーコードに関連付けられたメッセージの抑制は、その優先度に依存します。 変数の値が'ER_PARSER_TRACE,MY-010001,10002'
であるとします。 log_error_suppression_list
は、これらのコードのメッセージに次の影響を与えます:
WARNING
またはINFORMATION
の優先度で生成されたメッセージは抑制されます。ERROR
またはSYSTEM
の優先度で生成されたメッセージは抑制されません。
log_error_verbosity
の効果は、log_error_suppression_list
の効果と結合されます。 次の設定でサーバーを起動したとします:
[mysqld]
log_error_verbosity=2 # error and warning messages only
log_error_suppression_list='ER_PARSER_TRACE,MY-010001,10002'
この場合、log_error_verbosity
では、優先度が ERROR
または WARNING
のメッセージが許可され、優先度が INFORMATION
のメッセージが破棄されます。 破棄されないメッセージのうち、log_error_suppression_list
は、優先度が WARNING
のメッセージおよび指定されたエラーコードを破棄します。
例に示されている log_error_verbosity
値 2 もデフォルト値であるため、この変数の INFORMATION
メッセージへの影響は、明示的な設定なしで、デフォルトで説明されているとおりです。 log_error_suppression_list
が INFORMATION
優先度のメッセージに影響を与えるようにするには、log_error_verbosity
を 3 に設定する必要があります。
次の設定でサーバーが起動したとします:
[mysqld]
log_error_verbosity=1 # error messages only
この場合、log_error_verbosity
では優先度が ERROR
のメッセージが許可され、優先度が WARNING
または INFORMATION
のメッセージが破棄されます。 抑制される可能性のあるすべてのエラーコードが log_error_verbosity
設定のためにすでに破棄されているため、log_error_suppression_list
の設定は効果がありません。