Tomcat의 로그파일중 catalina.out은 하나의 파일에 계속 로그가 누적됨으로

파일의 크기가 무지막지하게 커지는 현상을 볼수있다.

차후 파일의 크기가 일정크기를 벗어났을때 에러도 발생하기때문에 정기적으로 Tomcat을 내리고 삭제해주는 작업을 해야되는

불편함이 있어서 파일을 다른 로그처럼 날짜별로 생성하고 싶었다.

 

그래서 검색을 했더니 log4j나 몇가지 다른 방법으로 설정하는 방법이 존재하는거 같았다.

하지만 Apache의 rotatelogs를 이용하는게 제일 쉽고 간단해 보였다.

 

방법은 /Tomcat설치폴더/bin/catalina.sh 파일의 내용중

  shift

  touch "$CATALINA_OUT"

  if [ "$1" = "-security" ] ; then

    if [ $have_tty -eq 1 ]; then

      echo "Using Security Manager"

    fi

    shift

    eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $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 \

      >> "$CATALINA_OUT" 2>&1 "&"

  else

    eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $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 \

      >> "$CATALINA_OUT" 2>&1 "&"

  fi

이부분에서 몇가지 부분을 아래와 같이 변경한다.

  shift

  #touch "$CATALINA_OUT"

  if [ "$1" = "-security" ] ; then

    if [ $have_tty -eq 1 ]; then

      echo "Using Security Manager"

    fi

    shift

    eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $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 \

      2>&1 "&" | /apache설치위치/bin/rotatelogs "$CATALINA_OUT"-%Y-%m-%d 86400 540 &

  else

    eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $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 \

      2>&1 "&" | /apache설치위치/bin/rotatelogs "$CATALINA_OUT"-%Y-%m-%d 86400 540 &

  fi

위의 빨간색 글자부분이 변경된 부분이다.

우선 touch "$CATALINA_OUT" 부분을 주석처리한다.

주석처리하지 않으면 아래와같이 파일크기가 0인 catalina.out 이라는 파일이 계속 생성되어 있는것을 볼수 있다.

그다음으로 Apache가 설치된 경로를 확인한다.

이는 날짜별 파일 생성을 위해 rotatelogs를 사용하는데 Apache의 설치경로 아래에 bin폴더에 존재하기 때문이다.

그리고 나서

>> "$CATALINA_OUT" 2>&1 "&" 

부분이 두군데 있는데 두군데 모두를 

2>&1 "&" | /apache설치위치/bin/rotatelogs "$CATALINA_OUT"-%Y-%m-%d 86400 540 &

로 변경해준다.

 

당연히 "apache설치위치"는 실제 위치를 기재해야된다.

그리고 뒷쪽의 옵션이 %Y-%m-%d 86400 540 이렇게 붙는데

%Y-%m-%d는 날짜 표현(상세 표현 방법은 아래 표 참조)

%A (지역화된) 완전한 요일 이름
%a (지역화된) 3-문자 요일 이름
%B (지역화된) 완전한 달 이름
%b (지역화된) 3-문자 달 이름
%c (지역화된) 날짜와 시간
%d 2-자리 일
%H 2-자리 시간 (24 시간 시계)
%I 2-자리 시간 (12 시간 시계)
%j 3-자리 날짜수
%M 2-자리 분
%m 2-자리 달
%p (지역화된) 12 시간 시계의 am/pm
%S 2-자리 초
%U 2-자리 주일수 (주의 첫번재 날은 일요일)
%W 2-자리 주일수 (주의 첫번재 날은 월요일)
%w 1-자리 요일수 (주의 첫번째 날은 일요일)
%X (지역화된) 시간
%x (지역화된) 날짜
%Y 4-자리 연도
%y 2-자리 연도
%Z 시간대 이름
%% 문자그대로 `%'
 

86400는 로테이션 시간을 초단위로 표현 (86400은 24시간 즉 매일)

540은 표준시와 한국시간과의 시간차를 표현

 

이제 catalina.out 로그는 날짜별로 생성되어 진다.

아래 참고사이트에 가면 더 다양한 설정 방법 및 옵션을 확인 가능하다.

참고 사이트 : http://adminid.kr/unixlinux/102231

                  http://httpd.apache.org/docs/current/programs/rotatelogs.html

                  

AND

///// 톰캣 (Tomcat)

배포할 파일을 tomcat폴더 바로 아래의 webapps에 넣어 놓게 된다.

로그 파일은 tomcat폴더 바로 아래의 logs폴더에 점점 쌓이게 된다.

 

그렇지만, 경우에 따라서는 이런 기본 경로(위치)를 바꾸고 싶은 분들 있을 수 있다!

 

내 경우에는 드랍박스에 톰캣을 설치했기 때문에 war와 log파일로 인한 잦은 동기화를 방지하고 싶었다.

 

방법은 간단하다.

 

tomcat폴더 바로 아래의 conf폴더안의 파일들을 수정하면 된다.

 

 

 

 

///// webapps폴더 경로(위치) 변경하기

1. conf/sever.xml을 수정한다

 

- 기본 설정:

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true">

 

- 경로 변경 후: 

<Host name="localhost"  appBase="D:/dev/tomcat_webapps"

            unpackWARs="true" autoDeploy="true">

* 아쉬운 점이 있다면, 절대 경로만 되는 것 같다.

 

 

- 추가 설정: (뭔지 모르겠지만 이것도 추가하기)

<Host name="localhost"  appBase="D:/dev/tomcat_webapps"

            unpackWARs="true" autoDeploy="true"

   xmlValidation="false"  xmlNamespaceAware="false">

 

 

 

///// logs폴더 경로(위치) 변경하기

1. conf/sever.xml을 수정한다

 

- 기본 설정:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

                   prefix="localhost_access_log." suffix=".txt"

                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />

- 경로 변경후:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="D:/dev/tomcat_logs"

                   prefix="localhost_access_log." suffix=".txt"

                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />

* 아쉬운 점이 있다면, 절대 경로만 되는 것 같다.

 

2. bin/catalina.sh를 수정한다

- 기본 설정:

if [ -z "$CATALINA_OUT" ] ; then

  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

fi

 

- 경로 변경 후:

if [ -z "$CATALINA_OUT" ] ; then

  CATALINA_OUT=E:/dev/logs/catalina.out

fi

 

3. conf/logging.properties를 수정한다

- 기본 설정:

1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

...

2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

...

3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

...

4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

 

- 경로 변경 후:

1catalina.org.apache.juli.FileHandler.directory = E:/dev/tomcat_logs

...

2localhost.org.apache.juli.FileHandler.directory = E:/dev/tomcat_logs

...

3manager.org.apache.juli.FileHandler.directory = E:/dev/tomcat_logs

...

4host-manager.org.apache.juli.FileHandler.directory = E:/dev/tomcat_logs

 

 

 

///// 참고

Tomcat의 webapps 디렉토리 경로 변경하기: http://itpaper.co.kr/index.php?mid=java&document_srl=2776&ckattempt=1

Tomcat에서의 로그위치 변경하기: http://blog.naver.com/xers1/140166771033

AND

intellij에는 기본으로 제공하는 svn disconnect기능이 없다.(내가 알기론.)

그래서 intellij에 별도 플러그인을 설치해야한다.

 

SVN Disconnect 플러그인 설치방법

1. 설정에서 Plugins 메뉴에서 svn disconnect 검색후 파란색 Browse 클릭!

 

 

2. 검색된 플러그인 설치 녹색 Install plugin 클릭!

 

 

3. download and install 완료후 Restart IntelliJ IDEA클릭!

 

AND