본문 바로가기

WEB-SERVER/OHS & JBCS & Apache

Log Rotation 하기

728x90

참고

https://httpd.apache.org/docs/2.4/logs.html

https://httpd.apache.org/docs/2.4/programs/rotatelogs.html

https://sg-choi.tistory.com/23


Web Server의 Access Log와 Error Log 파일들을 로테이션을 시켜주지 않으면,

하나의 파일에 지속적으로 쌓이기 때문에 파일 용량 크기 문제가 발생 할 수 있다.

일자별로 Web Server 로그들을 로테이션 하는 방법을 작성해 봅니다.

 

우선 Apache 2.4 버전부터..

 

[Apache 2.4]

우선 Apahce의 rotatelogs 파일의 위치는

${APACHE_HOME}/bin 에 위치해있다.

 

그리고 vi 편집기를 통해서 ${APACHE_HOME}/conf/httpd.conf를 보면 ErrorLog를 검색하면 다음과 같이 나온다.

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error_log"

 

이 부분을 수정하여 로그 파일들이 순환되게끔 하는 법은 다음과 같다.

 

[ErrorLog 표현법]
ErrorLog "||${YOUR_APACHE_HOME}/bin/rotatelogs ${YOUR_LOG_DIR}/error.%Y-%m-%d.log 86400 +540"

[AccessLog 표현법]
CustomLog "||${YOUR_APACHE_HOME}/bin/rotatelogs ${YOUR_LOG_DIR}/access.%Y-%m-%d.log 86400 +540" common

여기서 나오는 common은 LogFormat에 대한 Alias이다.


Oracle Http Server (OHS) 12c R2 버전은 다음과 같다.

 

[Oracle Http Server 12c R2]

 

※ OHS는 기본적으로 conf 경로가 두 가지인데,

하나는 ${OHS_DOMAIN_HOME}/conf/fmwconfig/components/OHS/${COMP_NAME}

나머지는 ${OHS_DOMAIN_HOME}/conf/fmwconfig/components/OHS/instances/${COMP_NAME} 이다.

 

기본적으로는 ${OHS_DOMAIN_HOME}/conf/fmwconfig/components/OHS/${COMP_NAME}

경로의 conf 파일로 Web Server를 튜닝.

 

OHS는 로그 로테이션을 위한 파일이 2 가지가 있다.

하나는 Apache에서 넘어온 rotatelogs,

다른 하나는 OHS에서 제공하는 odl_rotatelogs 파일이다. 

 

${OHS_DOMAIN_HOME}/conf/fmwconfig/components/OHS/${COMP_NAME}/httpd.conf

 

[ErrorLog 표현법]
ErrorLog "||${PRODUCT_HOME}/bin/odl_rotatelogs ${YOUR_LOG_DIR}/error_log-%Y%m%d 86400 540"

[AccessLog 표현법]
CustomLog "||${PRODUCT_HOME}/bin/odl_rotatelogs ${YOUR_LOG_DIR}/access_log-%Y%m%d 86400 540" common

 

만약 Apache의 rotatelogs파일을 OHS의 로그 로테이션에 적용하고 싶다면,

OraLogMode odl-text 를 OraLogMode apache로 변경하고 rotatelogs로 명시해줘야 한다.

[BEFORE]
# Directives to setup logging via ODL
OraLogDir "${ORACLE_INSTANCE}/servers/${COMPONENT_NAME}/logs"
OraLogMode odl-text
OraLogSeverity WARNING:32

[AFTER]
# Directives to setup logging via ODL
OraLogDir "${ORACLE_INSTANCE}/servers/${COMPONENT_NAME}/logs"
OraLogMode apache
OraLogSeverity WARNING:32

[ErrorLog 표현법]
ErrorLog "||${PRODUCT_HOME}/bin/rotatelogs ${YOUR_LOG_DIR}/error_log-%Y%m%d 86400 540"

[AccessLog 표현법]
CustomLog "||${PRODUCT_HOME}/bin/rotatelogs ${YOUR_LOG_DIR}/access_log-%Y%m%d 86400 540" common