On this page
Log4j Kubernetes 支持
Log4j 通过提供查找来检索容器信息来支持 Kubernetes。
Accessing Kubernetes
Log4j Kubernetes 支持需要访问 Docker REST 接口。在许多情况下,可以自动访问 REST 服务。如果需要,可以在任何标准 Log4j 配置位置或通过 Spring Boot 配置来配置 KubernetesClient 端。但是请注意,由于 Spring Boot 会导致日志记录初始化 3 次,并且由于 Spring 环境仅在上次 Log4j 初始化期间可用,因此 Spring 属性仅对上次初始化的 Log4j 可用。
Lookup Attributes
Log4j Kubernetes 提供对以下容器属性的访问:
accountName-服务帐户名称。
clusterName-运行应用程序的群集的名称。
containerId-分配给容器的完整 ID。
containerName-分配给容器的名称。
host-主机名。
hostIp-主机的 IP 地址。
imageId-分配给图像的 ID。
imageName-分配给图像的名称。
标签-在列表中格式化的所有标签。
labels.app-应用程序名称。
labels.podTemplateHash-窗格的模板哈希值。
masterUrl-访问 API 服务器所需的 URL。
namespaceId-各种 kubernetes 组件位于其中的名称空间的 ID。
namespaceName-各种 kubernetes 组件位于其中的名称空间。
podId-窗格的 ID 号。
podIp-窗格的 IP 地址。
podName-窗格的名称。
可以通过添加属性来访问属性
${k8s:containerId}
配置。请注意,kubernetes 变量在记录初始化期间仅解析一次,因此不应使用多个'$'字符来引用它们。
Configuration
Kubernetes 自动提供访问 Kubernetes API 服务器所需的许多配置。但是,通常需要提供访问 Kubernetes API 服务器或应用程序分配到的名称空间所需的 url。可以使用 Log4j 变量名配置以下属性,并通过 Log4j 的常规属性解析机制 mechansim 定位该属性,或者当应用程序在 Spring Boot 中运行并且创建了 Spring Environment 时,Log4j 将解析 spring 属性。请注意,Spring Boot 会初始化日志记录 3 次,只有最后一次会出现一个 Spring Environment。
Log4j 属性名称 | SpringProperty 名称 | Default | Description |
---|---|---|---|
log4j2.kubernetes.client.apiVersion | spring.cloud.kubernetes.client.apiVersion | v1 | Kubernetes API 版本 |
log4j2.kubernetes.client.caCertData | spring.cloud.kubernetes.client.caCertData | Kubernetes API CACertData | |
log4j2.kubernetes.client.caCertFile | spring.cloud.kubernetes.client.caCertFile | Kubernetes API CACertFile | |
log4j2.kubernetes.client.clientCertData | spring.cloud.kubernetes.client.clientCertData | Kubernetes API ClientCertData | |
log4j2.kubernetes.client.clientCertFile | spring.cloud.kubernetes.client.clientCertFile | Kubernetes API ClientCertFile | |
log4j2.kubernetes.client.clientKeyAlgo | spring.cloud.kubernetes.client.clientKeyAlgo | RSA | Kubernetes API ClientKeyAlgo |
log4j2.kubernetes.client.clientKeyData | spring.cloud.kubernetes.client.clientKeyData | Kubernetes API ClientKeyData | |
log4j2.kubernetes.client.clientKeyFile | spring.cloud.kubernetes.client.clientKeyFile | Kubernetes API ClientKeyFile | |
log4j2.kubernetes.client.clientKeyPassPhrase | spring.cloud.kubernetes.client.clientKeyPassphrase | changeit | Kubernetes API ClientKeyPassphrase |
log4j2.kubernetes.client.connectionTimeout | spring.cloud.kubernetes.client.connectionTimeout | 10s | Connection timeout |
log4j2.kubernetes.client.httpProxy | spring.cloud.kubernetes.client.http-proxy | ||
log4j2.kubernetes.client.httpsProxy | spring.cloud.kubernetes.client.https-proxy | ||
log4j2.kubernetes.client.loggingInberval | spring.cloud.kubernetes.client.loggingInterval | 20s | Logging interval |
log4j2.kubernetes.client.masterUrl | spring.cloud.kubernetes.client.masterUrl | kubernetes.default.svc | Kubernetes API 主节点 URL |
log4j2.kubernetes.client.namespacce | spring.cloud.kubernetes.client.namespace | default | Kubernetes Namespace |
log4j2.kubernetes.client.noProxy | spring.cloud.kubernetes.client.noProxy | ||
log4j2.kubernetes.client.password | spring.cloud.kubernetes.client.password | Kubernetes API 密码 | |
log4j2.kubernetes.client.proxyPassword | spring.cloud.kubernetes.client.proxyPassword | ||
log4j2.kubernetes.client.proxyUsername | spring.cloud.kubernetes.client.proxyUsername | ||
log4j2.kubernetes.client.requestTimeout | spring.cloud.kubernetes.client.requestTimeout | 10s | Request timeout |
log4j2.kubernetes.client.rollingTimeout | spring.cloud.kubernetes.client.rollingTimeout | 900s | Rolling timeout |
log4j2.kubernetes.client.trustCerts | spring.cloud.kubernetes.client.trustCerts | false | Kubernetes API 信任证书 |
log4j2.kubernetes.client.username | spring.cloud.kubernetes.client.username | Kubernetes API 用户名 | |
log4j2.kubernetes.client.watchReconnectInterval | spring.cloud.kubernetes.client.watchReconnectInterval | 1s | Reconnect Interval |
log4j2.kubernetes.client.watchReconnectLimit | spring.cloud.kubernetes.client.watchReconnectLimit | -1 | 重新连接间隔限制重试 |
Requirements
Log4j Kubernetes 需要 Log4j Core,Log4j API 和最少的 Java8.有关更多信息,请参阅Runtime Dependencies。