No es necesario redirigir los registros.
Docker almacena los registros de forma predeterminada en un archivo de registro. Para comprobar la ruta del archivo de registro ejecutar el comando:
docker inspect --format='{{.LogPath}}' containername
/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log
Abra ese archivo de registro y analícelo.
si redirige los registros, solo obtendrá registros antes de la redirección. no podrá ver los registros en vivo.
EDITAR:
Para ver los registros en vivo, puede ejecutar el siguiente comando
tail -f `docker inspect --format='{{.LogPath}}' containername`
Nota:
Este archivo de registro /var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log
se creará solo si la ventana acoplable genera registros, si no hay registros, este archivo no estará allí. es similar a cuando ejecutamos el comando docker logs containername
y no devuelve nada. En ese escenario, este archivo no estará disponible.
tail -f `docker inspect --format='{{.LogPath}}' myapp`
- realmente es JSON¿Qué tal esta opción?
docker logs containername >& logs/myFile.log
No redirigirá los registros solicitados en la pregunta, sino que los copiará una vez a un archivo específico.
fuente
docker logs --help
para estar segurodocker logs -f <yourContainer> &> your.log &
Explicación:
-f
(es decir--follow
): escribe todos los registros existentes y continúa ( sigue ) registrando todo lo que viene a continuación.&>
redirige tanto la salida estándar como el error estándar.&
.> output.log 2> error.log
(en lugar de usar&>
).fuente
Para capturar tanto stdout como stderr desde su contenedor docker en un solo archivo de registro, ejecute lo siguiente:
fuente
Suponiendo que tiene varios contenedores y desea agregar los registros en un solo archivo, debe usar algún agregador de registros como fluentd. fluentd se admite como controlador de registro para contenedores Docker.
Entonces, en docker-compose, debe definir el controlador de registro
El segundo paso sería actualizar la configuración de fluentd para atender los registros tanto del servicio 1 como del servicio 2
En esta configuración, pedimos que los registros se escriban en un solo archivo en esta ruta
/fluentd/log/service/service.*.log
y el tercer paso sería ejecutar el fluentd personalizado que comenzará a escribir los registros en el archivo.
Aquí está el enlace para instrucciones paso a paso
Bit Long, pero de manera correcta, ya que obtiene más control sobre la ruta de los archivos de registro, etc. y también funciona bien en Docker Swarm.
fuente
Dado que Docker fusiona stdout y stderr para nosotros, podemos tratar la salida del registro como cualquier otro flujo de shell. Para redirigir los registros actuales a un archivo, use un operador de redirección
$ docker logs test_container > output.log
docker logs -f test_container > output.log
En lugar de enviar la salida a stderr y stdout, redirija la salida de su aplicación a un archivo y asigne el archivo a un almacenamiento permanente fuera del contenedor.
$ docker logs test_container> /tmp/output.log
Docker no aceptará rutas relativas en la línea de comando, por lo que si desea usar un directorio diferente, deberá usar la ruta completa.
fuente
Si trabaja en Windows y usa PowerShell (como yo), podría usar la siguiente línea para capturar
stdout
ystderr
:¡Espero que esto ayude a alguien!
fuente
foreach ($element in $(docker ps -a --format "{{.Names}}")) {docker logs $element | Out-File "C:/dockerlogs/$element.log"}
La forma más fácil que uso es este comando en la terminal:
la estructura es:
fuente
Primero verifique su identificación de contenedor
Puede ver la primera fila en las columnas de ID DE CONTENEDOR. Probablemente se vea así "3fd0bfce2806" y luego escríbalo en shell
Verás algo como esto
entonces puedes verlo como
Estaría en formato JSON, puede usar la marca de tiempo para rastrear errores
fuente
Script de bash para copiar todos los registros del contenedor a un directorio específico:
fuente