Apache에서 VirtualHost당 2개의 오류 로그를 가질 수 있습니까?

Apache에서 VirtualHost당 2개의 오류 로그를 가질 수 있습니까?

나는 약 10개의 VirtualHost를 가지고 있으며 error_log를 분리된 상태로 유지하고 싶습니다. 최근에는 일부 mod_security 스캐닝을 위해 error_logs를 모두 결합해야 합니다.

VirtualDomain 테스트에 대해 2개의 ErrorLog를 정의하면 오류가 기록되지 않는다는 것을 알 수 있습니다. 꽤 이상해요.

CustomLog가 ErrorLog 역할을 수행하도록 할 수 있습니까?

아니면 2개의 ErrorLog를 잘못 정의하고 있습니까?

<VirtualHost 1.2.3.4:80>
    ServerName mydomain.net
    ServerAlias www.mydomain.net mydomain.net
    DocumentRoot /var/www/html/mydomain
    ServerAdmin [email protected]
    UseCanonicalName Off

    ErrorLog logs/mydomain.net-error_log
    ErrorLog logs/unified_modsecurity-error_log

    CustomLog logs/mydomain.net-access_log combined
    UserDir disabled
    UserDir enabled mydomainuser
</VirtualHost>

답변1

아니요, VirtualHost당 두 개의 ErrorLog 지시어를 가질 수 없습니다. 그러나 UNIX 'tee' 명령을 사용하여 두 개 이상의 파일에 기록하기 위해 명령으로 파이프하는 Apache의 기능을 사용할 수 있습니다.

ErrorLog "|/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"

답변2

에 따르면Apache 2.4 로그 문서:

기본적으로 파이프된 로그 프로세스는 셸을 호출하지 않고 생성됩니다. "|" 대신 "|$"를 사용하세요. 쉘을 사용하여 생성하려면(보통 /bin/sh -c 사용):

이는 Apache 2.2의 기본 동작이었습니다.

예:

# Write to files error-1.log and error-2.log, and echo to stdout
CustomLog "|$/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"

내가 겪은 또 다른 문제는 다음과 같습니다.

  • 큰따옴표와 막대 사이에는 공백이 없어야 합니다.
    • "|$ ...유효합니다.
    • " |$ ...아니다.

관련 정보