Tomcat 무분별하게 catalina.out 크기 커지는것 막기

기존에 작성했던 [이곳]의 글은 catalina.out 파일을 쓰지 못하게 하여 중복 로깅을 못하게 하는 방법이었습니다.
실제로 톰캣은 catalina.<날짜>와 catalina.out 두개의 파일을 로깅하고 있어 퍼포먼스에 조금 신경이 쓰이는 부분이었습니다.

기존의 글을 토대로 catalina.out을 제거하였다고 쳐도 admin이나 localhost같은 특이한 로그 파일이 자꾸 늘어나는것도 신경이 조금 쓰이더군요.

톰캣의 conf 디렉토리 안에있는 logging.properties 안의 내용을 다음과 같이 수정하여 봅시다.

위의 내용을 제외한 나머지는 모두 주석처리 해버리면 catalina.<날짜> 형태의 로그 외에는 모두 기록하지 않습니다.

개발환경이 아닌 단순 서비스 환경에서는 이렇게 로그를 최소화 하는것이 좋겠네요.

1catalina.org.apache.juli.FileHandler.level 의 값을 조정하여 로그 레벨을 정의할수도 있습니다.

——————————————————————————————————

일 단. 톰캣로그를 날짜별로 남기는 녀석이 누구인가 알아보니. tomcat6.0 conf디렉토리에 있는 logging.proerties파일에 정의된 *..org.apache.juli.FileHandler클래스들이다. 이 녀석들은 콘솔출력과 별개로 날짜별로 로그파일을 생성한다. 즉, 콘솔출력을 catalina.out으로 저장하는 부분만 막으면 문제는 해결된다.

org.apache.catalina.startup.Bootstrap “$@” start >> /dev/null 2>&1 &
#      org.apache.catalina.startup.Bootstrap “$@” start \
#      >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &

위와 같이 catalina.sh를 바꾸어주면 된다. 이런곳이 2군데 있다.

—————————————————————————————————-

cronolog라는 놈을 www.cronolog.org 에 가서 다운받는다.

 

설치방법
* root 로 설치해야 한다.
./configure
make
make install

 

그런다음 catalina.sh 파일을 수정한다.
.
.
.
.
  shift
touch “$CATALINA_BASE”/logs/catalina.out
if [ “$1” = “-security” ] ; then
echo “Using Security Manager”
shift
“$_RUNJAVA” $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
-Djava.security.manager \
-Djava.security.policy==”$CATALINA_BASE”/conf/catalina.policy \
-Dcatalina.base=”$CATALINA_BASE” \
-Dcatalina.home=”$CATALINA_HOME” \
-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
     org.apache.catalina.startup.Bootstrap “$@” \
start |/usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.out.%y%m%d >> /dev/null 2>&1 &
#      org.apache.catalina.startup.Bootstrap “$@” start \
#      >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
     if [ ! -z “$CATALINA_PID” ]; then
echo $! > $CATALINA_PID
fi
else
“$_RUNJAVA” $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
-Dcatalina.base=”$CATALINA_BASE” \
-Dcatalina.home=”$CATALINA_HOME” \
-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
     org.apache.catalina.startup.Bootstrap “$@” \
start |/usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.out.%y%m%d >> /dev/null 2>&1 &
#      org.apache.catalina.startup.Bootstrap “$@” start \
#      >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
.
.
.
.
start 포함해서 한줄에 작성해야 한다.
기존 문장은 주석처리 하든 지우던 하공…
그리고, shutdown.sh를 이용해 톰캣을 죽일때
cronolog도 같이 죽지만,
때에 따라 안죽는 경우도 있으니
ps 명령을 이용해 죽었는지 확인해야한다.
ps -ef cronolog

—————————————————————————————————

# Configuration of Web log
#log4j.rootLogger=DEBUG,console,INFO, web
#log4j.rootLogger = INFO, stdout
#핸들러의 로깅레벨은 SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST or ALL 이 있습니다

log4j.rootLogger=CONSOL , DEBUG , ERROR , SYSTEM , WARN , WEB
log4j.appender.CONSOL=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOL.Append=true
log4j.appender.CONSOL.ImmediateFlush=true
log4j.appender.CONSOL.Threshold=INFO
log4j.appender.CONSOL.DatePattern=’.’yyyy-MM-dd
log4j.appender.CONSOL.MaxFileSize=20MB
log4j.appender.CONSOL.MaxBackupIndex=10

#Layout 형식 : TTCCLayout, HTMLLayout,  XMLLayout, PatternLayout, SimpleLayout
#PatternLayout, SimpleLayout – 자바의 Throwable 에러들과 예외를 무시한다
log4j.appender.CONSOL.layout=org.apache.log4j.PatternLayout

 

#소스코드의 위치정보를 출력한다. %C. %M(%F:%L) 의 축약형이다 / %d %-5p [%t] %-17c{2} (%13F:%L) %3x – %m%n
log4j.appender.CONSOL.layout.ConversionPattern=[%-5p] %d{HH:mm:ss} [%c] [time: %r] – %m%n

 

# 로그파일 경로.
#log4j.appender.CONSOL.File=C:/javadev/develop/logs/mmsgw_web/
#log4j.appender.CONSOL.File=C:/egovframeworkSample/workspace/mmsgw_web/WebContent/WEB-INF/classes/logs
log4j.appender.CONSOL.File={catalina.home}/logs/tomcat.consol.log

 

#[%d{yyyy-MM-dd}형식은 프로그램의 실행속도를 느리게 함으로 SimpleDateFormat 형식지정한다
log4j.appender.CONSOL.layout.DateFormat=ISO8601

 

#[YYYY-MM-DD HH:MM:SS, mm] 형식을 뜻한다.
log4j.appender.CONSOL.layout.TimeZoneID=GMT-8:00

 

 

 
#매일 자정에 로그파일을 교체하며 기존파일은 xx.log_2004.07.12  org.apache.log4j.ConsoleAppender , DailyRollingFileAppender
log4j.appender.SYSTEM=org.apache.log4j.RollingFileAppender
log4j.appender.SYSTEM.Append=true
log4j.appender.SYSTEM.DatePattern=’.’yyyy-MM-dd
log4j.appender.SYSTEM.Threshold=INFO
log4j.appender.SYSTEM.ImmediateFlush=true
log4j.appender.SYSTEM.MaxFileSize=20MB
log4j.appender.SYSTEM.MaxBackupIndex=10

#자바의 Throwable 에러들과 예외를 포함하기 위해 HTMLLayout을 사용한다.
log4j.appender.SYSTEM.layout=org.apache.log4j.PatternLayout

#[%d{yyyy-MM-dd}형식은 프로그램의 실행속도를 느리게 함으로 SimpleDateFormat 형식지정한다
log4j.appender.SYSTEM.layout.DateFormat=ISO8601

#[YYYY-MM-DD HH:MM:SS, mm] 형식을 뜻한다.
log4j.appender.SYSTEM.layout.TimeZoneID=GMT-8:00

#소스코드의 위치정보를 출력한다. %C. %M(%F:%L) 의 축약형이다 / %d{HH:mm:ss} %5p (%C{2} – %M:%L) – %m%n
#log4j.appender.SYSTEM.layout.ConversionPattern=[%d] %-5p %l – %m%n
#log4j.appender.SYSTEM.layout.ConversionPattern=[%-5p] %d{HH:mm:ss} [%c] [time: %r] – %m%n
log4j.appender.SYSTEM.layout.ConversionPattern=%d{dd-MM-yy HH:mm:ss:SSS} – {%p} %c{2} Thread [%t]; %x %m%n

# 로그파일 경로.
#log4j.appender.SYSTEM.File=C:/javadev/develop/logs/mmsgw_web/
#log4j.appender.SYSTEM.File=C:/egovframeworkSample/workspace/mmsgw_web/WebContent/WEB-INF/classes/logs
log4j.appender.SYSTEM.File={catalina.home}/logs/tomcat.stdout.log

 

 

 

log4j.appender.WEB=org.apache.log4j.RollingFileAppender
log4j.appender.WEB.File=${catalina.home}/logs/tomcat.web.log
#log4j.appender.WEB.File=${catalina.home}/logs/
log4j.appender.WEB.MaxFileSize=20MB
log4j.appender.WEB.MaxBackupIndex=10
log4j.appender.WEB.layout=org.apache.log4j.PatternLayout
log4j.appender.WEB.layout.ConversionPattern=%p %t %c – %m%n
#log4j.appender.WEB.layout.ConversionPattern=[%-5p] %d{HH:mm:ss} [%c] [time: %r] – %m%n
#log4j.logger.org.apache.catalina=DEBUG, R

 

log4j.logger.org.apache.catalina.core=INFO
log4j.logger.org.apache.catalina.session=INFO
log4j.logger.org.apache.jasper.compiler=INFO

 

 

출처 : http://yaku.tistory.com/135

my.cnf  파일의 [mysqld] 항목에 아래 내용을 입력 후, mysql 재시작을 해줍니다.

> 슬로우 쿼리로 분류할 시간, 로그파일 위치

 

MySQL 5.5 이상 버전

slow_query_log                  = 1    # 0 비활성화, 1은 활성화
slow_query_log_file             = mysql-slow.log
long_query_time                 = 3     # 3초 이상 지연 쿼리 발생시 로깅

 

MySQL 5.1.34 이상 버전

slow_query_log = 10

slow_query_log_file = /usr/local/mysql/data/mysql-slow-queries.log

 

MySQL 4.x 이상 버전

long_query_time = 10

log-slow-queries = /usr/local/mysql/data/mysql-slow-queries.log

 

MySQL 3.x 이하 버전

set-variable = long_query_time = 10
log-slow-queries = /usr/local/mysql/data/mysql-slow-queries.log

 

 

참고 URL : http://system.neulwon.com/xe/?mid=linux_mysql&page=4&document_srl=262