나는 약 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"
내가 겪은 또 다른 문제는 다음과 같습니다.
- 큰따옴표와 막대 사이에는 공백이 없어야 합니다.
"|$ ...
유효합니다." |$ ...
아니다.