สมมติว่าคุณมีหลายคอนเทนเนอร์และต้องการรวมบันทึกเป็นไฟล์เดียวคุณต้องใช้ตัวรวบรวมบันทึกบางอย่างเช่น fluentd fluentd ได้รับการสนับสนุนเป็นโปรแกรมควบคุมการบันทึกสำหรับคอนเทนเนอร์นักเทียบท่า
ดังนั้นใน Docker-compose คุณต้องกำหนดไดรเวอร์การบันทึก
service1:
image: webapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service1
service2:
image: myapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service2
ขั้นตอนที่สองคือการอัปเดต fluentd conf เพื่อรองรับบันทึกสำหรับทั้งบริการ 1 และบริการ 2
<match service1>
@type copy
<store>
@type file
path /fluentd/log/service/service.*.log
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
</store>
</match>
<match service2>
@type copy
<store>
@type file
path /fluentd/log/service/service.*.log
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%
</store>
</match>
ในการกำหนดค่านี้เราขอให้เขียนบันทึกเป็นไฟล์เดียวไปยังเส้นทางนี้
/fluentd/log/service/service.*.log
และขั้นตอนที่สามคือการเรียกใช้ fluentd ที่กำหนดเองซึ่งจะเริ่มเขียนบันทึกลงไฟล์
นี่คือลิงค์สำหรับคำแนะนำทีละขั้นตอน
Bit Long แต่เป็นวิธีที่ถูกต้องเนื่องจากคุณสามารถควบคุมเส้นทางไฟล์บันทึกได้มากขึ้นและทำงานได้ดีใน Docker Swarm ด้วย
tail -f `docker inspect --format='{{.LogPath}}' myapp`
- มันคือ JSON จริงๆ