Syslog driver not catching error logs properly
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 6.1k
- Forks
- 2.2k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 43
Description
Description
Hello,
When I try to use syslog as a log driver, Docker sends all messages logged inside the container as INFO. Therefore I cannot catch errors/warnings in syslog coming from docker containers. Logs forwarded to stderr should be treated as errors and sent to syslog as ERROR priority so they can be caught by monitoring tools.
Reproduce
docker run --rm -ti --name test-log --log-driver syslog --log-opt syslog-facility=daemon --log-opt tag=docker --log-opt syslog-address=unixgram:///dev/log debian bash -c 'echo "stderrDOCKER" > /dev/stderr'
Expected behavior
No response
docker version
Client:
Version: 20.10.24+dfsg1
API version: 1.41
Go version: go1.19.8
Git commit: 297e128
Built: Thu May 18 08:38:34 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.24+dfsg1
API version: 1.41 (minimum version 1.12)
Go version: go1.19.8
Git commit: 5d6db84
Built: Thu May 18 08:38:34 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.20~ds1
GitCommit: 1.6.20~ds1-1+b1
runc:
Version: 1.1.5+ds1
GitCommit: 1.1.5+ds1-1+deb12u1
docker-init:
Version: 0.19.0
GitCommit:
docker info
Client:
Context: default
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 4
Server Version: 20.10.24+dfsg1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
Default Runtime: runc
Init Binary: docker-init
containerd version: 1.6.20~ds1-1+b1
runc version: 1.1.5+ds1-1+deb12u1
init version:
Security Options:
apparmor
seccomp
Profile: default
cgroupns
Kernel Version: 6.1.0-21-amd64
Operating System: Debian GNU/Linux 12 (bookworm)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.62GiB
Name: vpc-ret-fv-001
ID: QNS6:QCAY:O74G:SFND:ERNG:4F2A:YGSB:Z6C4:PYFR:VMTL:JCL4:KXR7
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Additional Info
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue provides a reproducible docker run command but names no source files or tests. Start by reproducing the syslog driver behavior with stderr output, then trace the Go implementation that maps container streams to syslog priorities. Done means stderr messages are emitted with ERROR priority while the existing driver behavior remains intact.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, go
- Domain
- cli, observability-sre
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100