| <!-- vim: set syn=markdown : --> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| #set($dollar = '$') |
| #set($h1='#') |
| #set($h2='##') |
| |
| $h1 Log4j Kubernetes Support |
| |
| Log4j supports Kubernetes by providing a Lookup to retrieve container information. |
| |
| $h2 Accessing Kubernetes |
| |
| The Log4j Kubernetes support requires access to the Docker REST interface. In many cases the REST service |
| can be accessed automatically. If needed the Kubernetes client can be configured any of the standard |
| Log4j configuration locations or via the Spring Boot configuration. Note, however, that since Spring Boot |
| causes logging to initialize 3 times and since the Spring environment is only available during the last |
| Log4j initialization Spring properties will only be available to Log4j in the last initialization. |
| |
| $h2 Lookup Attributes |
| |
| Log4j Kubernetes provides access to the following container attributes: |
| |
| * accountName - The service account name. |
| * clusterName - The name of the cluster the application is running in. |
| * containerId - The full id assigned to the container. |
| * containerName - The name assigned to the container. |
| * host - The name of the host. |
| * hostIp - The host's ip address. |
| * imageId - The id assigned to the image. |
| * imageName - The name assigned to the image. |
| * labels - All labels formatted in a list. |
| * labels.app - The application name. |
| * labels.podTemplateHash - The pod's template hash value. |
| * masterUrl - The url needed to access the API server. |
| * namespaceId - The id of the namespace the various kubernetes components are located within. |
| * namespaceName - The namespace the various kubernetes components are located within. |
| * podId - The pod's id number. |
| * podIp - The pod's ip address. |
| * podName - The name of the pod. |
| |
| #set( $D = '${' ) |
| #set( $container = 'k8s:containerId}') |
| Attributes may be accessed by adding |
| ``` |
| $D$container |
| ``` |
| to the configuration. Note that kubernetes variables are only resolved once during logging initialization so they |
| shouldn't be referenced with more than one '$' character. |
| |
| $h2 Configuration |
| |
| Much of the configuration needed to access the Kubernetes API server is provided automatically by Kubernetes. |
| However, it is not uncommon to need to provide the url required to access the Kubernetes API server or the |
| namespace the application is assigned to. The properties below may either be configured using the Log4j |
| variable names and located by Log4j's normal property resolution mechansim or Log4j will resolve the |
| spring properties when the application is running in Spring Boot and the Spring Environment has been created. |
| Note that Spring Boot initializes logging 3 times and only the last will have a Spring Environment present. |
| |
| | Log4j Property Name | Spring Property Name | Default | Description | |
| |------------------------ |----------------------:|----------:|------------:| |
| | log4j2.kubernetes.client.apiVersion | spring.cloud.kubernetes.client.apiVersion | v1 | Kubernetes API Version | |
| | 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 Master Node 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 Password | |
| | 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 Trust Certificates | |
| | log4j2.kubernetes.client.username | spring.cloud.kubernetes.client.username | | Kubernetes API Username | |
| | log4j2.kubernetes.client.watchReconnectInterval | spring.cloud.kubernetes.client.watchReconnectInterval | 1s | Reconnect Interval | |
| | log4j2.kubernetes.client.watchReconnectLimit | spring.cloud.kubernetes.client.watchReconnectLimit | -1 | Reconnect Interval limit retries | |
| |
| $h2 Requirements |
| Log4j Kubernetes requires Log4j Core, Log4j API and a minimum of Java 8. |
| For more information, see [Runtime Dependencies](../runtime-dependencies.html). |