Không cụ thể một câu trả lời được yêu cầu nhưng có lẽ là một cách tốt hơn, tùy thuộc vào kịch bản của bạn, sẽ là không đăng nhập vào thiết bị xuất chuẩn / stderr. Chỉ cần chuyển các bản ghi thành con mèo theo định dạng JSON. Điều này sẽ loại bỏ sự cần thiết phải phân biệt các luồng vì json có thể có dữ liệu cần thiết trong đó để phân biệt chúng. ví dụ một cái gì đó dọc theo dòng sau đây. Điều này sau đó có thể được tiêu hóa dễ dàng hơn nhiều vào một cái gì đó như Graylog
GlobalLog "| cat - " gelf
ErrorLog "| cat - "
LogFormat "{ \"apache_log\": \"ACCESS\", \"app_name\": \"apache\", \"Connection\": \"%{X-Forwarded-Proto}i:%{X-Forwarded-Port}i \", \"X-Forwarded-For\": \"%{X-Forwarded-For}i\", \"version\": \"1.1\", \"vhost\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"user_agent\": \"%{User-Agent}i\", \"source_ip\": \"%a\", \"duration_usec\": %D, \"duration_sec\": %T, \"request_size_byte\": %O, \"http_status\": %s, \"http_request_path\": \"%U\", \"http_request\": \"%U%q\", \"http_method\": \"%m\", \"http_referer\": \"%{Referer}i\", \"X-Powered-By\": \"%{X-Powered-By}i\" }" gelf
ErrorLogFormat "{ \"app_name\": \"apache\", \"apache_log\": \"ERROR\", \"time\":\"%{%Y-%m-%d}tT%{%T}t.%{msec_frac}tZ\", \"function\" : \"[%-m:%l]\" , \"process\" : \" [pid %P:tid %T] \" , \"message\" : \"%M\" ,\ \"referer\"\ : \" %{Referer}i \" }"
Ngoài ra còn có một mô-đun đăng nhập gelf, vì vậy bạn có thể truyền trực tiếp từ apache đến một máy chủ loại Graylog nếu bạn muốn