开云体育官方注册网址Debezium日志

开云体育官方注册网址Debezium有着丰富的日志内置连接器,您可以修改日志配置来控制哪些日志语句出现在日志,这些日志发送。开云体育官方注册网址Debezium(以及卡夫卡,卡夫卡连接,和管理员)使用Log4j为Java日志框架。

默认情况下,连接器生产大量的有用的信息当他们开始,然后产生很少的日志时,连接器跟上源数据库。开云体育电动老虎机这通常是足够的连接器正常运行时,但可能还不够当连接器意外行为。在这种情况下,您可以修改日志级别,以便连接器生成更详细的日志消息描述连接器在做什么和不做什么。

日志的概念

配置日志记录之前,您应该了解Log4J伐木工人,日志级别,输出源是这样的。

伐木工人

每个日志应用程序产生的消息被发送到一个特定的日志记录器(例如,io.开云体育官方注册网址debezium.connector.mysql)。伐木工人被安排在层次结构。例如,io.开云体育官方注册网址debezium.connector.mysql记录器的孩子io.开云体育官方注册网址debezium.connector记录器,它是孩子的io.开云体育官方注册网址debezium记录器。在层次结构的顶部,根记录器定义的默认日志配置所有的伐木工之下。

日志级别

每一个日志消息由应用程序也有一个特定的日志级别:

  1. 错误——错误、异常和其他重大问题

  2. 警告- - - - - -潜在的问题和问题

  3. 信息——状态和一般活动(通常容量)

  4. 调试更详细的活动,将有用的诊断异常行为

  5. 跟踪——非常详细和具体活动(通常是非常高)

输出源

一个appender本质上是一个目的地写日志消息。每一个appender控制日志消息的格式,给你更多的控制日志消息是什么样子。

配置日志记录,您指定所需的水平为每个记录器和appender (s)应该写这些日志消息。由于伐木工人等级,根记录器的配置作为默认的伐木工在它的下面,虽然您可以覆盖任何孩子(或后代)记录器。

理解默认日志配置

如果您正在运行在卡夫卡Debezium开云体育官方注册网址连接器连接过程,然后卡夫卡连接使用Log4j配置文件(例如,/ opt /卡夫卡/ config / connect-log4j.properties在卡夫卡的安装。默认情况下,该文件包含以下配置:

connect-log4j.properties
log4j.rootLogger=INFO, stdout(1)log4j.appender.stdout = org.apache.log4j.ConsoleAppender(2)log4j.appender.stdout.layout = org.apache.log4j.PatternLayout(3)log4j.appender.stdout.layout。ConversionPattern = [% d] % p % m (%) % n(4)
1 根记录器,它定义了默认的日志配置。默认情况下,伐木工人包括信息,警告,错误消息。这些日志消息写入stdoutappender。
2 stdoutappender写日志消息到控制台(而不是文件)。
3 stdoutappender使用模式匹配算法格式的日志消息。
4 的模式stdoutappender(见Log4j文档详情)。

除非你配置其他伐木工人,所有的伐木工Debezium使用继承开云体育官方注册网址rootLogger配置。

配置日志记录

默认情况下,编写所有De开云体育官方注册网址bezium连接器信息,警告,错误消息到控制台。您可以更改默认的日志配置通过使用下列方法之一:

还有其他方法,您可以使用配置Debezium与Log4j日志记录。开云体育官方注册网址更多的信息,寻找教程设置和使用输出源发送日志消息到特定的目的地。

设置日志级别通过配置伐木工

默认Debezium日志开云体育官方注册网址级别提供了足够的信息来显示连接器是否健康。然而,如果一个连接器是不健康的,你可以改变它的日志级别解决这个问题。

一般来说,Debeziu开云体育官方注册网址m连接器发送日志消息的伐木工与名称相匹配的Java类的完全限定名称生成日志消息。开云体育官方注册网址Debezium使用包组织代码具有相似或相关的功能。这意味着您可以控制的所有日志消息的一个特定的类或类内或在一个特定的包。

过程
  1. 打开log4j . properties文件。

  2. 配置一个记录器的连接器。

    这个示例配置MySQL连接器的伐木工和历史数据库模式实现使用的连接器,并设置日志开云体育电动老虎机调试级别的消息:

    log4j . properties
    …log4j.logger.io.开云体育官方注册网址debezium.connector.mysql =调试stdout(1)log4j.logger.io.开云体育官方注册网址debezium.relational.history =调试stdout(2)log4j.additivity.io.开云体育官方注册网址debezium.connector.mysql = false(3)log4j.additivity.io.开云体育官方注册网址debezium.storage.kafka.history = false(3)
    1 配置日志记录器命名io.开云体育官方注册网址debezium.connector.mysql发送调试,信息,警告,错误消息stdoutappender。
    2 配置日志记录器命名io.开云体育官方注册网址debezium.relational.history发送调试,信息,警告,错误消息stdoutappender。
    3 关闭可加性,从而导致日志消息没有被发送到appender的父母记录器(这可以防止看到重复的日志消息当使用多个输出源)。
  3. 如果有必要,修改日志级别为一个特定类的子集内的连接器。

    增加日志级别为整个连接器增加日志冗长,可使人难以理解正在发生的事情。在这些情况下,您可以修改日志级别的子集类相关问题,故障排除。

    1. 设置连接器的日志级别调试跟踪

    2. 检查连接器的日志消息。

      找到相关的日志消息你是故障诊断的问题。每个日志消息显示消息产生的Java类的名称。

    3. 设置连接器的日志级别信息

    4. 配置一个记录器为每个Java类,您确认。

      例如,考虑这样一个场景,在该场景中,您不确定为什么MySQL连接器处理binlog时跳过一些事件。而不是打开调试跟踪为整个连接器日志,你可以保持连接器的日志级别信息然后配置调试跟踪只是类阅读binlog:

      log4j . properties
      …log4j.logger.io.开云体育官方注册网址debezium.connector.mysql = INFO, stdout log4j.logger.io.debezium.connector.mysql.BinlogReader =调试、stdout log4j.logger.io.debezium.relational.history = INFO, stdout log4j.additivity.io.debezium.connector.mysql = false log4j.additivity.io.debezium.storage.kafka.history = false log4j.additivity.io.debezium.connector.mysql.BinlogReader = false……

动态设置日志级别与卡夫卡REST API连接

您可以使用卡夫卡REST API连接到连接器在运行时动态地设置日志级别。与日志级别设置的更改log4j . properties通过API,变化,立即生效,并且不要求您重新启动工人。

您所指定的日志级别设置API仅适用于工作人员在接收请求的端点。集群中的其他工人的日志级别保持不变。

指定的水平不坚持后工人重新启动。持续的修改日志级别,设置日志级别log4j . properties通过配置伐木工添加映射诊断上下文

过程
  • 设置日志级别通过发送一个PUT请求到管理/伐木工端点指定以下信息:

    • 你想要的包修改日志级别。

    • 你想要设置的日志级别。

      curl - s - x - h " application / json - type:“http://localhost: 8083 / admin /伐木工/ io.deb开云体育官方注册网址ezium.connector。< connector_package >- d '{“级别”:“< log_level >“}”

      例如,记录调试信息Debezium MySQL连接器,卡夫卡连接发送以下请求:开云体育官方注册网址

      curl - s - x - h " application / json - type:“http://localhost: 8083 / admin /伐木工io.debez开云体育官方注册网址ium.connector.mysql - d '{“级别”:“调试”}’

设置日志级别与映射诊断上下文

大多数De开云体育官方注册网址bezium连接器(和卡夫卡连接工人)使用多个线程来执行不同的活动。这可能很难查看日志文件,发现只有那些特定逻辑日志消息的活动。日志消息容易找到,Debezium提供了一些开云体育官方注册网址诊断上下文映射为每个线程(MDC)提供额外的信息。

开云体育官方注册网址MDC Debezium提供了以下属性:

dbz.connectorType

一个简短别名连接器的类型。例如,MySql,蒙戈,Postgres,等等。与相同的所有线程类型连接器的使用相同的值,因此您可以使用它来查找所有日志消息由一个给定类型的连接器。

dbz.connectorName

连接器的名称或数据库服务器中定义的连接器的配置。开云体育电动老虎机例如产品,serverA,等等。关联到一个特定的所有线程连接器实例使用相同的值,所以你可以找到所有的日志消息由一个特定的连接器实例。

dbz.connectorContext

一个简短的名字为一个活动运行作为一个单独的线程运行在连接器的任务。例如,主要,binlog,快照,等等。在某些情况下,当一个连接器线程分配到特定的资源(例如一个表或集合),可以使用该资源的名称。每个线程关联到一个连接器使用一个不同的值,所以你可以找到所有的日志消息与这个特定的活动。

让MDC连接器,您配置的appenderlog4j . properties文件。

过程
  1. 打开log4j . properties文件。

  2. 配置一个appender使用任何支持的Debezium争取民主变革运动的属性。开云体育官方注册网址

    在以下的示例中,stdoutappender配置为使用这些争取民主变革运动的属性:

    log4j . properties
    …log4j.appender.stdout.layout。ConversionPattern = % d {ISO8601} % 5 p % {dbz.connectorType} | % X X {dbz {dbz.connectorName} | %。connectorContext} % m [% c] % n…

    前面的示例中的配置产生日志消息类似于下面的输出:

    …2017-02-07 20:49:37,692信息MySQL | dbserver1 |快照开始快照为jdbc: MySQL: / / MySQL: 3306 / ?useInformationSchema = true&nullCatalogMeansCurrent = false&useSSL = false&useUnicode = true&characterEncoding = UTF-8&characterSetResults = UTF-8&zeroDateTimeBehavior = convertToNu开云体育官方注册网址ll与用户“debezium”[io.debezium.connector.mysql.SnapshotReader] 2017-02-07 20:49:37,696信息MySQL | dbserver1 |快照快照使用MySQL用户“debezium”,这些赠款:[io.debezium.connector.mysql.SnapshotReader] 2017-02-07 20:49:37,697信息MySQL | dbserver1 |快照格兰特选择、重新加载,显示数据库,复制的奴隶,复制客户*。开云体育电动老虎机*“debe开云体育官方注册网址zium”@‘%’(io.debezium.connector.mysql.SnapshotReader)……

    每一行日志中包括连接器类型(例如,MySQL),连接器的名称(例如,dbserver1)和线程的活动(例如,快照)。

配置日志级别Debezium容器中的图像开云体育官方注册网址

Debe开云体育官方注册网址zium容器图片管理员、卡夫卡和卡夫卡都建立连接log4j . properties文件配置Debezium-related伐木开云体育官方注册网址工。所有日志消息被发送到集装箱码头工人的控制台(因此码头工人日志)。下的日志消息也写入文件卡夫卡/日志目录中。

容器使用LOG_LEVEL环境变量来设置日志级别为根记录器。您可以使用此环境变量来设置日志级别服务运行在容器中。当你启动容器,这个环境变量的值设置为一个日志级别(例如,- e LOG_LEVEL =调试容器内),所有的代码,然后使用日志级别。

还有一个选项来覆盖其他log4j属性。如果你想配置log4j.rootLogger不同,然后使用环境变量CONNECT_LOG4J_LOGGERS。例如只有stdout(没有记录appender),您可以使用CONNECT_LOG4J_LOGGERS = INFO, stdout。您还可以设置其他支持log4j环境变量与CONNECT_LOG4J前缀,将映射到属性log4j . properties文件被删除CONNECT_前缀,小写字符,将所有“_”字符转换为“。”。

如果你需要更多的控制日志配置,创建一个新容器基于我们的形象,除了你Dockerfile,复制自己log4j . properties文件到图像。例如:

Dockerfile
…复制log4j。$ KAFKA_HOME / config / log4j属性。属性……