> ## Content Index
> Fetch the complete content index at: https://linuxhandbook.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Checking Kubernetes Log With kubectl logs Command
- URL: https://linuxhandbook.com/kubectl-logs/
- Published: 2024-09-15T14:10:01.000Z
- Updated: 2024-09-24T12:40:16.000Z
- Description: The kubectl logs is a powerful tool for monitoring and troubleshooting Kubernetes applications
- Author: LHB Community
- Tags: Using Kubernetes

In Kubernetes, viewing logs is essential for troubleshooting and monitoring the health of applications. The `kubectl logs` command is primarily used to fetch the logs from a particular pod. 

This guide provides various practical examples of checking logs for pods and other resources in Kubernetes.

## kubectl logs command

Kubernetes logs give insights into the behavior of your applications running within pods. Each container in a pod generates logs, and `kubectl logs` helps you fetch those logs. 

By default, this command retrieves logs from the first container of a pod, but you can specify other containers when necessary.

**Basic syntax:**

```
kubectl logs <pod_name> [container_name] [flags]

```

## Viewing logs of a single container pod

To view logs of a single container pod, simply specify the pod name. Here’s an example of fetching logs from a pod named `dev-app-pod`:

```
kubectl logs dev-app-pod

```

Output

```
2024-09-13T12:35:47.123Z Starting application...
2024-09-13T12:35:47.456Z Connecting to database...
2024-09-13T12:35:48.789Z Listening on port 8080...
2024-09-13T12:35:50.123Z Application started successfully.

```

## Viewing logs of a multi-container pod

In a multi-container pod, each container generates its own log. To view logs from a specific container, you can add the container name to the `kubectl logs` command.

```
kubectl logs my-multi-container-pod -c my-container

```

Output.

```
2024-09-13T12:36:00.123Z Initializing container `my-container`.
2024-09-13T12:36:00.789Z Processing incoming request...
2024-09-13T12:36:02.567Z Sending response...

```

## Viewing logs with timestamps

By default, logs do not show timestamps. To view logs with timestamps, use the `--timestamps` flag.

```
kubectl logs dev-app-pod --timestamps

```

Output.

```
2024-09-13T12:35:47.123Z Starting application...
2024-09-13T12:35:47.456Z Connecting to database...
2024-09-13T12:35:48.789Z Listening on port 8080...
2024-09-13T12:35:50.123Z Application started successfully.

```

## Streaming logs (Real-time logs)

To [stream logs in real time](https://linuxhandbook.com/watch-logs-real-time/) as they are being generated, use the `-f` (follow) option.

```
kubectl logs dev-app-pod -f

```

Output.

```
2024-09-13T12:35:50.123Z Application started successfully.
2024-09-13T12:36:00.456Z Received request from 192.168.1.10
2024-09-13T12:36:00.789Z Processing request...
2024-09-13T12:36:01.234Z Sending response...

```

This command will continuously stream new log entries until you stop it with **Ctrl+C**.

## Viewing logs of previous instances of pods

When a pod is restarted, you can view the logs from its previous instance using the `--previous` flag.

```
kubectl logs dev-app-pod --previous

```

Output.

```
2024-09-13T12:30:40.123Z Shutting down application...
2024-09-13T12:30:41.567Z Application stopped.

```

## Filtering logs by tail count

If you're only interested in the most recent log entries, you can use the `--tail` flag to display a limited number of logs.

```
kubectl logs dev-app-pod --tail=5

```

Output.

```
2024-09-13T12:35:48.789Z Listening on port 8080...
2024-09-13T12:35:50.123Z Application started successfully.
2024-09-13T12:36:00.456Z Received request from 192.168.1.10
2024-09-13T12:36:00.789Z Processing request...
2024-09-13T12:36:01.234Z Sending response...

```

## Using labels to fetch logs

Instead of fetching logs by specifying pod names, you can fetch logs by labels. This is particularly useful when you have many pods with the same label.

```
kubectl logs -l app=dev-app

```

Output.

```
2024-09-13T12:35:47.123Z Starting application...
2024-09-13T12:35:47.456Z Connecting to database...
2024-09-13T12:35:48.789Z Listening on port 8080...
2024-09-13T12:35:50.123Z Application started successfully.

```

This will retrieve logs from all pods with the label `app=dev-app`.

## Viewing logs from a specific node

If you need to troubleshoot logs from pods running on a particular node, use the following command to list logs from that node.

```
kubectl logs -l app=dev-app --field-selector spec.nodeName=node-1

```

Output.

```
2024-09-13T12:40:22.123Z Pod on node-1 initializing...
2024-09-13T12:40:23.456Z Starting the service on node-1.

```

This retrieves logs from pods on a node labeled `node-1`.

## Conclusion

The kubectl logs command is a powerful tool for monitoring and troubleshooting Kubernetes applications. By leveraging various options and flags, you can gain deep insights into your pod's behavior, filter logs effectively, and even stream logs in real time for immediate feedback.

✍️

Author: Hitesh Jethwa has more than 15+ years of experience with Linux system administration and DevOps. He likes to explain complicated topics in easy to understand way.