Saya menjalankan Apache2 dalam wadah buruh pelabuhan, dan ingin menulis apa pun ke disk, menulis log ke stdout dan stderr. Saya telah melihat beberapa cara berbeda untuk melakukan ini ( Supervisord dan stdout / stderr , akses log Apache ke stdout ) tetapi ini tampak seperti hack. Apakah tidak ada cara untuk melakukan ini secara default?
Untuk lebih jelasnya, saya tidak ingin membuntuti log, karena itu akan menghasilkan hal-hal yang ditulis ke disk dalam wadah.
apache-2.2
docker
aronchick
sumber
sumber
Jawaban:
bekerja di ubuntu dan cento untuk saya
sumber
domain.conf
file Anda atau.htaccess
jika Anda tidak menggunakanconf
.Bagaimana dengan menempatkan ini di Dockerfile Anda setelah paket apache2 diinstal?
Dengan asumsi bahwa ini adalah jalur log. Ini untuk Ubuntu 14.04 dan juga berfungsi untuk Ubuntu 16.04.
Catatan: jika Anda yakin bahwa tautan simbolik
/dev/stdout
atau/proc/stderr
ada di sana, maka Anda juga dapat menggunakannya. Saya lebih suka jalur ke file nyata karena ini dijamin hadir.sumber
Tidak secara khusus jawaban yang diminta tetapi mungkin cara yang lebih baik, tergantung pada skenario Anda, adalah untuk tidak masuk ke stdout / stderr sama sekali. Hanya pipa log ke kucing dalam format JSON. Ini akan menghilangkan kebutuhan untuk membedakan stream karena json dapat memiliki data yang diperlukan untuk membedakannya. misalnya sesuatu di sepanjang garis berikut ini. Ini kemudian dapat dicerna dengan lebih mudah menjadi sesuatu seperti graylog
Ada juga modul logging gelf, sehingga Anda dapat melakukan streaming langsung dari apache ke server jenis graylog juga jika Anda mau
sumber