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 节,“通信错误和中止连接”。
如果您使用复制,
log_error_verbosity
建议使用 2 或更大的值,以获取有关正在发生的事情的更多信息,例如有关网络故障和重新连接的消息。
如果log_error_verbosity
在副本上为 2 或更大,则副本将消息打印到错误日志以提供有关其状态的信息,例如二进制日志和中继日志坐标它开始其作业的位置,切换到另一个中继日志的时间,当它断开连接后重新连接,等等。
还有一个SYSTEM
不受冗长过滤限制的消息优先级。无论值如何,有关非错误情况的系统消息都会打印到错误日志中
log_error_verbosity
。这些消息包括启动和关闭消息,以及对设置的一些重大更改。
在 MySQL 错误日志中,系统消息被标记为 “系统”。其他日志接收器可能会或可能不会遵循相同的约定,并且在生成的日志中,系统消息可能会被分配用于信息优先级的标签,例如“注释”或 “信息”。如果您根据消息标签对日志记录应用任何额外的过滤或重定向,系统消息不会覆盖您的过滤器,但会像处理其他消息一样由它处理。
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 错误消息参考。
服务器可以为不同优先级的给定错误代码生成消息,因此抑制与 中列出的错误代码关联的消息
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
优先级和任何指定错误代码的消息。
示例中显示的 2的log_error_verbosity
值也是它的默认值,所以这个变量对
INFORMATION
消息的影响就像刚才描述的那样默认,没有显式设置。log_error_verbosity
如果要
log_error_suppression_list
影响具有INFORMATION
优先级
的消息,则必须设置
为 3。
考虑使用此设置启动的服务器:
[mysqld]
log_error_verbosity=1 # error messages only
在这种情况下,
log_error_verbosity
允许具有ERROR
优先级的消息并丢弃具有WARNING
或
INFORMATION
优先级的消息。设置
log_error_suppression_list
无效,因为它可能抑制的所有错误代码都已由于
log_error_verbosity
设置而被丢弃。