「エラー」ログという名前でありながら実質は「MySQLのアプリケーションログ」
MySQL運用・管理[実践]入門 p61
サーバーシステム変数: log_error
デフォルトは stderr
でコンソールに出力します。
ファイルパスを指定するとファイルに出力します。
[mysqld]
...
log_error=/var/log/mysql/error.log
サーバーシステム変数: log_error_verbosity
(デフォルト 2)
ref. log_error_verbosity
log_error_verbosity
は 1 から 3 の値をとります。
最小値は ERROR のみを出力します。ERROR を出力しない設定はありません( ERROR は必ず出力されます)。
ref. 7.4.2.5 Priority-Based Error Log Filtering (log_filter_internal)
※ log_warnings
は MySQL 8.0 で削除されました。
log_warnings システム変数および --log-warnings サーバーオプションが削除されました。 かわりに log_error_verbosity システム変数を使用してください。
ref. 1.3 MySQL 8.0 の新機能
# my.cnf
[mysqld]
...
# ファイルに出力
log_output=FILE
# エラーログ
log_error_verbosity=3
Assigning a value to log_warnings assigns a value to log_error_verbosity and vice versa
ref. log_error_verbosity
「log_warnings に値を代入すると log_error_verbosity にも値が代入される、逆も同様」(deepl.com)
Setting log_warnings=0 is equivalent to log_error_verbosity=1 (errors only).
Setting log_warnings=1 is equivalent to log_error_verbosity=2 (errors, warnings).
Setting log_warnings=2 (or higher) is equivalent to log_error_verbosity=3 (errors, warnings, notes), and the server sets log_warnings to 2 if a larger value is specified.
ref. log_warnings
MySQLが「受け付けたクエリをすべて書き出す機能」
MySQL運用・管理[実践]入門 p61。
デフォルトは無効です。general_log
で有効・無効を設定します。
サーバーシステム変数: general_log
(デフォルト 無効)
サーバーシステム変数: log_output
(デフォルト FILE )
一般ログと後述するスローログの出力形式は log_output
で指定します。
FILE (デフォルト) または TABLE が指定可能です。
エラーログの出力形式は log_output
ではなく log_error
で指定します。
[mysqld]
...
log_output=FILE // 明示的に FILE を指定する場合(デフォルトが FILE なので省略可能)
general_log=1
general_log_file=/var/log/mysql/general.log
クエリエラーを含めたすべてのクエリのログを出力します(接続情報も出力します)。
ただしシンタックスエラーは出力しません。
-- fooテーブルは存在しない
mysql> select * from foo; -- クエリエラー
ERROR 1146 (42S02): Table 'sample.foo' doesn't exist
mysql> sect * from sample; -- シンタックスエラー
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sect * from sample' at line 1
上記は以下のように出力されます。
`2023-02-04T07:51:05.233973Z 5 Query select * from foo`
接続失敗エラーは以下のように出力されます。
2023-02-07T06:06:42.239948Z 3 Connect root@localhost on using Socket
2023-02-07T06:06:42.240033Z 3 Connect Access denied for user 'root'@'localhost' (using password: YES)
[mysqld]
...
# slow query log
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=0.25
監査ログはMySQLの https://dev.mysql.com/doc/refman/5.6/ja/audit-log.html?utm_source=pocket_reader に記載されている機能を使用しているよう
AuditはEnterpriseのみ使用できる。
MySQL Enterprise Audit is a new feature for security and compliance. It's not included in the Open Source / Community edition.
https://dba.stackexchange.com/questions/178213/mysql-audit-and-general-log
[mysqld]
...
# error log
log-error=/var/log/mysql/error.log
# output
log_output=FILE
# general query log
general_log=1
general_log_file=/var/log/mysql/general.log
# slow query log
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=0.25