# Controlador de registro Syslog


El controlador de registro `syslog` redirige los registros a un servidor `syslog`. El protocolo `syslog` utiliza una cadena de texto sin formato como mensaje de registro y admite un conjunto limitado de metadatos. El mensaje de syslog debe tener un formato específico para ser válido. A partir de un mensaje válido, el receptor puede extraer la siguiente información:

- Prioridad (Priority): el nivel de registro, como `debug`, `warning`, `error`, `info`.
- Marca de tiempo (Timestamp): cuándo ocurrió el evento.
- Nombre de host (Hostname): dónde ocurrió el evento.
- Servicio (Facility): qué subsistema registró el mensaje, como `mail` o `kernel`.
- Nombre de proceso e ID de proceso (PID): El nombre e ID del proceso que generó el registro.

El formato se define en [RFC 5424](https://tools.ietf.org/html/rfc5424) y el controlador syslog de Docker implementa la [referencia ABNF](https://tools.ietf.org/html/rfc5424#section-6) de la siguiente manera:

```text
                TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID
                    +          +             +           |        +
                    |          |             |           |        |
                    |          |             |           |        |
        +-----------+          +----+        |           +----+   +---------+
        v                           v        v                v             v
2017-04-01T17:41:05.616647+08:00 a.vm {taskid:aa,version:} 1787791 {taskid:aa,version:}
```

## Uso

Para usar el controlador `syslog` como el controlador de registro predeterminado, establece las claves `log-driver` y `log-opts` con los valores adecuados en el archivo `daemon.json`. Para obtener más información sobre cómo configurar Docker mediante `daemon.json`, consulta [daemon.json](/reference/cli/dockerd/#daemon-configuration-file).



> [!NOTE]
>
> Si usas Docker Desktop, edita la configuración del demonio a través del
> panel de Docker Desktop. Abre **Settings** y selecciona **Docker Engine**.
> Para más detalles, consulta
> [Configuración de Docker Engine](/desktop/settings-and-maintenance/settings/#docker-engine).


El siguiente ejemplo establece el controlador de registro en `syslog` y configura la opción `syslog-address`. Las opciones de `syslog-address` admiten tanto UDP como TCP; este ejemplo utiliza UDP.

```json
{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "udp://1.2.3.4:1111"
  }
}
```

Reinicia Docker para que los cambios surtan efecto.

> [!NOTE]
>
> Las opciones de configuración de `log-opts` en el archivo de configuración `daemon.json` deben proporcionarse como cadenas. Los valores numéricos y booleanos (como el valor para `syslog-tls-skip-verify`) deben, por lo tanto, estar entre comillas (`"`).

Puedes establecer el controlador de registro para un contenedor específico utilizando la opción `--log-driver` al emplear `docker container create` o `docker run`:

```console
$ docker run \
      --log-driver syslog --log-opt syslog-address=udp://1.2.3.4:1111 \
      alpine echo hello world
```

## Opciones

Las siguientes opciones de registro son compatibles como opciones para el controlador de registro `syslog`. Se pueden establecer por defecto en `daemon.json` añadiéndolas como pares clave-valor a la matriz JSON `log-opts`. También se pueden configurar en un contenedor determinado agregando una opción `--log-opt <clave>=<valor>` para cada opción al iniciar el contenedor.

| Opción                   | Descripción                                                                                                                                                                                                                                                                                                                                                            | Valor de ejemplo                                                                                         |
| :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- |
| `syslog-address`         | La dirección de un servidor `syslog` externo. El especificador de URI puede ser `[tcp\|udp\|tcp+tls]://host:port`, `unix://path` o `unixgram://path`. Si el transporte es `tcp`, `udp` o `tcp+tls`, el puerto predeterminado es `514`.                                                                                                                                 | `--log-opt syslog-address=tcp+tls://192.168.1.3:514`, `--log-opt syslog-address=unix:///tmp/syslog.sock` |
| `syslog-facility`        | El servicio `syslog` a utilizar. Puede ser el número o el nombre de cualquier servicio `syslog` válido. Consulta la [documentación de syslog](https://tools.ietf.org/html/rfc5424#section-6.2.1).                                                                                                                                                                      | `--log-opt syslog-facility=daemon`                                                                       |
| `syslog-tls-ca-cert`     | La ruta absoluta a los certificados de confianza firmados por la CA. Se ignora si el protocolo de la dirección no es `tcp+tls`.                                                                                                                                                                                                                                        | `--log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem`                                        |
| `syslog-tls-cert`        | La ruta absoluta al archivo de certificado TLS. Se ignora si el protocolo de la dirección no es `tcp+tls`.                                                                                                                                                                                                                                                             | `--log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem`                                         |
| `syslog-tls-key`         | La ruta absoluta al archivo de clave TLS. Se ignora si el protocolo de la dirección no es `tcp+tls`.                                                                                                                                                                                                                                                                   | `--log-opt syslog-tls-key=/etc/ca-certificates/custom/key.pem`                                           |
| `syslog-tls-skip-verify` | Si se establece en `true`, se omite la verificación TLS al conectarse al demonio `syslog`. El valor predeterminado es `false`. Se ignora si el protocolo de la dirección no es `tcp+tls`.                                                                                                                                                                               | `--log-opt syslog-tls-skip-verify=true`                                                                  |
| `tag`                    | Una cadena que se añade al `APP-NAME` en el mensaje `syslog`. Por defecto, Docker utiliza los primeros 12 caracteres del ID del contenedor para etiquetar los mensajes de registro. Consulta la [documentación de la opción de etiqueta de registro](/engine/logging/drivers/syslog/log_tags/) para personalizar el formato.                                                                 | `--log-opt tag=mailer`                                                                                   |
| `syslog-format`          | El formato del mensaje `syslog` a utilizar. Si no se especifica, se utiliza el formato Unix syslog local, sin un nombre de host especificado. Especifica `rfc3164` para el formato compatible con RFC-3164, `rfc5424` para el formato compatible con RFC-5424, o `rfc5424micro` para el formato compatible con RFC-5424 con resolución de marca de tiempo en microsegundos. | `--log-opt syslog-format=rfc5424micro`                                                                   |
| `labels`                 | Aplica al iniciar el demonio de Docker. Una lista separada por comas de etiquetas relacionadas con el registro que este demonio acepta. Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/syslog/log_tags/).                                                                                                                                                   | `--log-opt labels=production_status,geo`                                                                 |
| `labels-regex`           | Aplica al iniciar el demonio de Docker. Similar y compatible con `labels`. Una expresión regular para hacer coincidir etiquetas relacionadas con el registro. Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/syslog/log_tags/).                                                                                                                              | `--log-opt labels-regex=^(production_status\|geo)`                                                       |
| `env`                    | Aplica al iniciar el demonio de Docker. Una lista separada por comas de variables de entorno relacionadas con el registro que este demonio acepta. Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/syslog/log_tags/).                                                                                                                                      | `--log-opt env=os,customer`                                                                              |
| `env-regex`              | Aplica al iniciar el demonio de Docker. Similar y compatible con `env`. Una expresión regular para hacer coincidir variables de entorno relacionadas con el registro. Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/syslog/log_tags/).                                                                                                                     | `--log-opt env-regex=^(os\|customer)`                                                                    |

