diff --git a/types/kafkajs/index.d.ts b/types/kafkajs/index.d.ts index c416a07063..96a05a527a 100644 --- a/types/kafkajs/index.d.ts +++ b/types/kafkajs/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for kafkajs 1.4 +// Type definitions for kafkajs 1.8 // Project: https://github.com/tulios/kafkajs, https://kafka.js.org // Definitions by: Michal Kaminski // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -71,6 +71,31 @@ export enum ResourceTypes { DELEGATION_TOKEN = 6 } +export interface LoggerMessage { + /** @var namespace Context from which the logger was called. */ + readonly namespace: string; + + /** @var level Logger level. */ + readonly level: logLevel; + + /** @var label Logger level label. */ + readonly label: string; + + /** @var log Content of the logger entry. */ + readonly log: LoggerMessageContent; +} + +export interface LoggerMessageContent { + /** @var timestamp Message timestamp. */ + readonly timestamp: Date; + + /** @var message Message sent to the logger. */ + readonly message: string; + + // Other possible fields in the content, that depend on the context. + [key: string]: any; +} + export interface KafkaOptions { clientId?: string; brokers: string[]; @@ -80,6 +105,7 @@ export interface KafkaOptions { requestTimeout?: number; retry?: RetryOptions; logLevel?: logLevel; + logCreator?: () => (message: LoggerMessage) => void; } export interface SASLOptions { diff --git a/types/kafkajs/kafkajs-tests.ts b/types/kafkajs/kafkajs-tests.ts index 3ae0f37c2c..15fe47deba 100644 --- a/types/kafkajs/kafkajs-tests.ts +++ b/types/kafkajs/kafkajs-tests.ts @@ -8,7 +8,8 @@ import { CompressionTypes, CompressionCodecs, ResourceTypes, - PartitionAssigner + PartitionAssigner, + LoggerMessage } from "kafkajs"; const { MemberMetadata, MemberAssignment } = AssignerProtocol; @@ -18,6 +19,10 @@ const { roundRobin } = PartitionAssigners; const host = "localhost"; const topic = "topic-test"; +const logger = (loggerMessage: LoggerMessage): void => { + console.log(`[${loggerMessage.namespace}] ${loggerMessage.log.message}`); +}; + const kafka = new Kafka({ logLevel: logLevel.INFO, brokers: [`${host}:9094`, `${host}:9097`, `${host}:9100`], @@ -31,7 +36,8 @@ const kafka = new Kafka({ mechanism: "plain", username: "test", password: "testtest" - } + }, + logCreator: () => logger }); // CONSUMER