暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

5.4.2.4基于优先级的错误日志过滤(log_filter_internal)

原创 由迪 2020-07-28
2679

log_filter_internal日志过滤器组件实现日志的一个简单的形式滤波基于误差事件优先级和错误代码。要影响如何 log_filter_internal允许或禁止用于错误日志的错误,警告和信息事件,请设置 log_error_verbositylog_error_suppression_list 系统变量。

log_filter_internal内置并默认启用。如果此过滤器被禁用 log_error_verbosity并且 log_error_suppression_list没有效果,那么必须使用其他过滤器服务来对过滤进行建模,而不是在需要的地方(例如,使用时使用单独的过滤规则log_filter_dragnet)。有关过滤器配置的信息,请参见 第5.4.2.1节“错误日志组件配置”

详细度过滤

用于错误日志事件具有的优先级 ERRORWARNINGINFORMATION。所述 log_error_verbosity系统变量控制冗长基于其优先级以允许在写入日志消息,如图所示,在下表中。

允许的邮件优先级 log_error_verbosity值
ERROR 1个
ERRORWARNING 2
ERRORWARNINGINFORMATION 3

如果log_error_verbosity大于等于2,则服务器记录有关对于基于语句的日志记录不安全的语句的消息。如果值为3,则服务器将记录中止的连接和访问被拒绝的错误,以进行新的连接尝试。请参见 第B.3.2.10节“通信错误和中止的连接”

如果使用复制,log_error_verbosity建议使用2或更大的 值,以获取有关正在发生的事情的更多信息,例如有关网络故障和重新连接的消息。

如果log_error_verbosity副本上的值为2或更大,则副本会将消息输出到错误日志,以提供有关其状态的信息,例如二进制日志和中继日志坐标(在它开始工作时,切换到另一个中继日志时)。断开连接后重新连接,依此类推。

还有一个优先级SYSTEM。无论log_error_verbosity值如何,有关非错误情况的系统消息都会打印到错误日志中 。这些消息包括启动和关闭消息,以及对设置的一些重大更改。

在MySQL错误日志中,系统消息被标记为 “ System ”。其他日志编写者可能会遵循或可能不会遵循相同的约定,并且在生成的日志中,可能会为系统消息分配用于信息优先级的标签,例如“ Note ”或 “ Information ”。如果您基于消息的标签对日志记录应用任何其他过滤或重定向,系统消息不会覆盖您的过滤器,但由过滤器以与其他消息相同的方式进行处理。

抑制列表过滤

log_error_suppression_list 系统变量适用于用于错误日志,并指定其当它们的优先级发生的事件打压的事件WARNINGINFORMATION。例如,如果某种特定类型的警告 由于频繁发生但并不令人关注,因此在错误日志中被认为是不希望的“ 噪音 ”,则可以将其抑制。

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,错误消息和常见问题

服务器可以以不同的优先级为给定的错误代码生成消息,因此对与其中列出的错误代码关联的消息的抑制 log_error_suppression_list 取决于其优先级。假设变量的值为'ER_PARSER_TRACE,MY-010001,10002'。然后 log_error_suppression_list 具有以下效果:

  • 如果生成优先级为WARNING或的 消息,则这些代码的消息将被抑制INFORMATION
  • 优先级为 ERRORSYSTEM不禁止显示的消息。
详细度和抑制列表交互

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允许具有ERRORWARNING优先级的消息,并丢弃具有INFORMATION优先级的消息 。在未 log_error_suppression_list 丢弃的消息中,WARNING优先丢弃消息和任何指定的错误代码。

注意

log_error_verbosity 示例中显示 的值2也是其默认值,因此该变量对 INFORMATION消息的影响如默认情况下所描述,没有显式设置。log_error_verbosity如果要log_error_suppression_list 影响INFORMATION 优先级消息,则必须设置 为3 。

考虑使用此设置启动的服务器:

[mysqld] log_error_verbosity=1 # error messages only

在这种情况下, log_error_verbosity允许具有ERROR优先级的消息,并丢弃具有WARNINGINFORMATION优先级的消息。该设置 log_error_suppression_list 无效,因为它可能会抑制所有由于其log_error_verbosity设置而导致的错误代码 。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论