I have an application which stores logs in a file at a configurable location.
Let's say /abc/pqr/application.log
Application is being migrated to Kubernetes where it will run in a single pod. If I run kubectl log <pod-name>, I get anything that gets printed on stdout which I can redirect to a file. I want to do the other way around, I have a file containing logs at above location and I want kubectl logs <pod-name> to print logs from that file.
For example, if run kubectl logs kafka for a kafka pod deployed using bitnami/kafka, I get logs from /opt/bitnami/kafka/logs/server.log. I want to mimic this behavior.
kubectl logs command takes everything from stdout and stderr, so you need to supply logs there.
It's a common practice when containerised applications write their logs to stdout and stderr.
This way there are two main options:
Adjust the application so it writes logs to stdout and file as well.
E.g. using shell it can be done with tee command.
Please find a good answers with description of the command.
Use a sidecar container which will be getting logs from file and translating them into its own stdout.
Please find Using a sidecar container with the logging agent
Useful link about kubernetes logging (including containers):