그 동안은 sts 에서 tomcat을 run as 했었는데 실제로는 프로젝트 파일을 .war로 압축해 tomcat에 올려야 한다.
어떻게 다른가??
우선 톰캣이 어떻게 돌아가는지 살펴본다.
1. tomcat 설치 된 폴더 > bin > startup.bat 실행 > 인터넷 창에서 localhost:8080 을 실행하면 톰캣이 가지고 있는 index.jsp가 나온다.
프로젝트 폴더 build 과정
1. sts에서 build 하고자 하는 프로젝트 폴더에 마우스 우클릭 > maven > Update project
2. Run as > maven install (프로젝트를 .war 파일로 압축하는 과정)
- build success 라고 나오면 성공
- fail : jre 1.6 이냐고 물으면 maven update를 다시 한 번하고 2번 과정을 시도해본다.
3. 2번까지 하고 프로젝트에 target 폴더를 살펴보면 member-1.0.0-BUILD-SNAPSHOT.war 파일이 생겼다.
- 이 .war 파일 이름은 임의로 생성되는 것으로 프로젝트 패키지 두번째 명을 가져와서 생성된다.
3-1. 이 ...-SNAPSHOT.war 파일을 복사 > 톰캣 폴더 wepapps 에 붙여넣기 한다.
- war 파일 이름은 snapshot 이런 거 빼버리고 member로 (마음대로) 수정해준다.
3-2. bin > startup.bat > localhost:8080/member/ 하면 프로젝트가 실행된다
- 이게 진짜로 프로젝트롤 빌드해서 서버를 실행시켰다고 할 수 있다.
- 서버를 실행 후 wepapps 를 보면 member 폴더가 생겼다. member.war가 실행되면서 자동으로 생성한 것
4. 주소 뒤에 /member를 안붙이고 싶다면 처음 서버를 실행하면서 생긴 member 폴더를 지운 후
member.war 파일을 ROOT.war 파일로 이름 변경 후 실행해주면 된다.
log 파일 따로 남겨주기
우리가 톰캣에 프로젝트를 build 해서 실행할 때 log는 어디에 찍힐까?
tomcat > logs 폴더에 각 log 파일에 기록이 남게 된다.
logs 폴더 안에는 많은 log 파일이 쌓여있는데
- catalina : 로그를 포함한 모든 콘솔의 내용이 이곳에 찍힌다. 따라서 보통 3기가 이상의 용량을 가지고 있다.
- host-manager :
- localhost_access : 누가 접속했었는지 체크 가능
- manager :
즉, 우리는 만약 새벽 3시에 에러가 났다라고 하면 catalina 파일을 확인하면 되는데 너무 큰 용량 때문에 열리는 거 기다리다가 지칠 수 있고 새벽 3시의 에러 로그를 찾기도 힘들 것이다.
따라서 log 파일을 따로 볼 수 있도록 설정해줄 것이다.
이 설정은 프로젝트의 log4j.xml 에서 해준다.
(sts 에서 수정해줄 수도 있지만 다시 rolled 해주고 싶지 않다면
ROOT > WEB-INF > classes > log4j.xml 에서 수정해주고 다시 실행해주는 방법도 있다.)
log4j.xml
<!--
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
value 가 로그 표현식
%p 레벨
%-5p 레벨을 표시하는데 좌측정렬 5자 ( 5자가 안되면 나머지는 공백으로 채운다.)
%c 카테고리
%m 메시지
%n 줄바꿈
%d{} {}안의 형태로 날짜 출력
-->
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy MM dd HH:mm:ss, SSS} %-5p: %c - %m%n" />
</layout>
</appender>
<!-- 파일 설정 -->
<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="C:/service.log" />
<param name="DatePattern" value=".yyyy-MM-dd-HH-mm"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p: %c - %m%n" />
</layout>
</appender>
1. Appenders는 log를 어떤 식으로 찍어줄 것인가에 관한 설정이다.
<param name="ConversionPattern" value="%d{yyyy MM dd HH:mm:ss, SSS} %-5p: %c - %m%n" />
1) Appenders의 value는 로그 표현식을 나타낸다.
- %p : 레벨
- %-5p : 레벨을 표시하는데 좌측정렬 5자 (5자가 안되면 나머지는 공백으로 채운다.)
- %c : 카테고리
- %m : 메시지
- %n : 줄바꿈
- %d{} : {}안의 형태로 날짜를 출력
2) <!-- 파일 설정 --> : 로그 파일이 따로 생성되도록 하는 설정
- <appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
- <param name="File" value="C:/service.log" />
: value 는 로그 파일이 저장되는 장소와 이름 - <param name="DatePattern" value=".yyyy-MM-dd-HH-mm"/>
: value에 설정된 값이 로그 파일 교체 주기이다. HH까지 하면 시간마다, mm은 분단위
3) jdbc.sqltiming 에서 <appender-ref ref="file"/>을 추가해준다.
<!-- SQL LOGGER 설정 -->
<!-- 실행 쿼리 + 걸린시간 -->
<logger name="jdbc.sqltiming" additivity="false">
<level value="info" />
<appender-ref ref="console"/>
<appender-ref ref="file"/> <!-- 추가된 설정 부분 -->
</logger>
4) <!-- Root Logger --> 에서도 <appender-ref ref="file"/>을 추가해준다.
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
<appender-ref ref="file"/> <!-- 추가된 부분 -->
</root>
설정을 sts 에서 수정했다면 maven install 과정을 다시 해준다.
** 예전 .war 파일 냅다 지우지말고 뭐든 백업하는 습관을 들여두는 것이 좋다. _old 붙여서 따로 보관하기!
** 오류가 나거나 설정이 적용되지 않았다면
- Run as > maven clean
- 상단 메뉴바 Project > clean > 프로젝트 선택
로그 파일 설정을 해준 후에 서버 실행하는 방법 (2가지)
1) startup.bat 관리자 권한으로 실행
2) cmd 관리자 권한으로 실행 > cd 폴더경로(bin) > startup.bat
>> 결과 : c드라이브에 service.log 쌓이면 성공!
** 사진 가져오는 경로를 sts 에서 server.xml 에 설정해줬었는데
build 하게 되면 tomcat > conf > server.xml 에서 설정해주면 된다.
'Back-End > SPRING' 카테고리의 다른 글
SPRING] 외부 프로젝트 파일이 제대로 import 되지 않을 때 (0) | 2022.05.23 |
---|---|
SPRING] 스프링 프로젝트 생성, 설정 하기 (0) | 2022.05.23 |
SPRING] 초기 설정 , 프로젝트 생성 방법 (0) | 2022.05.23 |