티스토리 뷰
이글은 보지 말고 다음글로 넘어가세요.
오류 잡느라 폐기된 글..
==============================
http://holy1017.tistory.com/37 에서 쓰던 프로젝트를 그대로 쓴다
그리고 이번엔 http://addio3305.tistory.com/43 에서 하는 예제를 최대한 그대로 갇다 쓸것이다.
외냐면 로그 한번 설정해놓고 잊어버리거든;;
매 프로젝트마다 저글 보고 따라한다;;
아무튼 이클립스 온!
덤으로 프로젝트 이름좀 바꾸겟다.
프로젝트가 여러개다버니 테스트로 이름지어서...
어떤게 강좌용 글인지 헷갈렸기 때문;;
이전글 스샷엔 프로젝트 갯수가 몇개 없지만
다른컴엔 프로젝트가 10개 넘어간다...(왜인지 묻지마라..)
해당 프로젝트 폴더에서 우클릭 -리팩터 - 이름바꾸기
tistory로 변경
근데 이렇게하면 서버구동시의 주소는 그대로 test이다
서버에서 사용하는 주소는 서버로 가서 설정해줘야 한다
서버탭- 해당 서버 더블 클릭 - 보듈탭 선택 - 해당 프로젝트 선택 - 에딧 - 패치 부분 수정
...?? 어라.. 이미 바껴있다???
다른컴에서 사용하던 프로젝트는 안바뀌던데... 큼;;
아무튼 저렇게 바꾸면 된다..
이제 로그 설정 하러가자
학원에서는 로그 log4j 자르 파일을 임포트후 properties파일을 설정해서 사용하는법을 배웠는데...
잊어버렸다..
근데 오히려 잘된게 요즘엔 properties 방식을 안쓰는 추세라고 하니 뭐..
어쨋든 http://addio3305.tistory.com/43 글대로 로그.xml 파일을 열자
일단 어댑터 부분
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
라고 되있다
빨간 부분은 작동될 설정명이다.
아래부분에 로거라는 태그로 설정하는 부분에서 가져다 쓰는것이다
타겟으로 시스아웃만 설정된것을 볼수있다.
이건 구글링 하자 나도 모른다.
안쓰거든..
레이아웃은 출력하는 방식
파랑색 부분에 온갓 설정이 보이는데 구글링하자
옵션이 많아서 그렇다.
이제 로거 부분
<!-- Application Loggers -->
<logger name="holy.com.test">
<level value="info" />
</logger>
파랑색은 실제로 작동될 대상 및 범위를 정하는 것이다
holy.com.test
holy.com.test.ㅁㄴㅇㄹ
holy.com.test.ㄴㅇㄻㄴ.ㅁㄴㅇㄻ.ㅁㄴㅇㄻ.ㅁㄴㅇㄹ등등 저 패키지 폴더 안이라면 전부다 작동 대상이라는 뜻이다.
레벨값으로 인포라고 설정되있는데
디버그,인포,원,에러 였던가 아무튼 촐 5단계인데(오른족일수록 상위)
그중 인포 이상의 내용만 풀력하라는 것이다
저 설정 상태론 디버그로 부를 메세지는 출력 안된다.
즉 코딩중에 중간 값을 전부 디버그로 출력 시켜놓고 실사용시에는 인포나 원 이상으로 설저하면 콘솔 출력이 안되는 것이다.
로그 출력 자체가 성능을 엄연히 잡아머기때문에 이런 방식을 사용한다.
자 그럼 수정하자!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 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="%-5p: %c - %m%n" />
</layout>
</appender> -->
<appender
name="console"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%d{HH:mm:ss,SSS} %5p %c %m%n" />
</layout>
</appender>
<appender
name="console-infolog"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%d{HH:mm:ss,SSS} %5p %m%n" />
</layout>
</appender>
<appender
name="console-sql"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%d{HH:mm:ss,SSS} %m%n" />
</layout>
</appender>
<appender
name="console-table"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<!-- <logger name="holy.com.test">
<level value="info" />
</logger> -->
<!-- 자바파일 콘솔 출력 범위 설정 -->
<logger name="holy">
<level value="debug" />
</logger>
<!-- Query Loggers -->
<!-- 쿼리 로그 출력 -->
<logger
name="jdbc.sqlonly"
additivity="false">
<level value="INFO" />
<appender-ref ref="console-sql" />
</logger>
<logger
name="jdbc.resultsettable"
additivity="false">
<level value="INFO" />
<appender-ref ref="console-table" />
</logger>
<!-- 3rdparty Loggers -->
<!-- 스프링 세팅 로그 출력 -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<!-- <root>
<priority value="warn" />
<appender-ref ref="console" />
</root> -->
<!-- Root Logger -->
<root>
<priority value="off" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
기존 프로젝트에다가 참조글의 설정을 추가해줬다.
난 스프링 로그도 볼것이기때문에 스프링 크래임 워크 로그를 그대로 남긴 것이다
그리고 빨간줄에 저렇게 써놨는데
내 자바 패키지명은 저렇게 되있고 저 아래 전 폴더에서 사용할것이기 때문이다
저렇게 말이다.
sql 쿼리문하고
쿼리 결과 출력용은 따로 만들었다.
훗... 나도 이제 실력자군(?)...
그리고 참조글 대로 1단계 패키지 안에 커먼 폴더/패키지를 만들자.
나중에 다른 프로젝트에다가 이걸 그대로 복사해서 쓰면 된다.
커먼 폴더는 그러라고 만든거다.
참조글 2번 대로 자바 만들자
그대로 복사후 붇여넣기
코드는 해당글에서 복사해서 쓰자..
http://addio3305.tistory.com/43
어이구... 빨간줄이 아주 끝내준다
임포트 단축키를 쓰자
...안된다...
심지어 다른 자바파일 열어봤더니 전부 빨간줄...
아까 프로젝트 이름을 바꾼게 원인인데..
마븐이 자르 파일을 받을때 프로젝터 이름으로 만들어서 저장하나보다..
이럴땐 프로젝트- 정리 를 눌러주제...
그리고 다시 임포트 단축키 컨-쉬-o
깔끔해졌다
위 내용은 뭐 취향것 수정해도 된다.
자세한 설명은 해당 참조글에서 봐라
다음은 참조글 3번
저렇게 자바 파일만 있어봤자 누가 저걸 불러주지 않으면 무의미하다.
저걸 항상 불러주는 설정을 하자
/tistory/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml 열자
그리고 다음과 같이 수정했다
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
xmlns="http://www.springframework.org/schema/mvc"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing
infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving
up static resources in the ${webappRoot}/resources directory -->
<resources
mapping="/resources/**"
location="/resources/" />
<resources
mapping="/css/**"
location="/css/" />
<resources
mapping="/js/**"
location="/js/" />
<resources
mapping="/fonts/**"
location="/fonts/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources
in the /WEB-INF/views directory -->
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property
name="prefix"
value="/WEB-INF/views/" />
<beans:property
name="suffix"
value=".jsp" />
</beans:bean>
<!-- 패키지 어노테이션 스캔 설정 범위 설정 -->
<context:component-scan base-package="holy" />
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<beans:bean
id="loggerInterceptor"
class="holy.common.LoggerInterceptor"></beans:bean>
</mvc:interceptor>
</mvc:interceptors>
<beans:bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<beans:bean
class="org.springframework.web.servlet.view.BeanNameViewResolver"
p:order="0" />
<beans:bean
id="jsonView"
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</beans:beans>
우리는 참조글과 설정부분이 조금식 다른데
스프링 프로젝트 설정시 빈즈 xmlns 설정을 저렇게 해버렸기 때문..
뜯어고치느니 걍 난 추가했다
참조글과 다르게 빈 태그 앞에 빈즈태그를 추가로 붇인걸 볼수 있다.
참고로 저걸 따로 분리 했어야 했는데......
해버리자!
/tistory/src/main/webapp/WEB-INF/web.xml 열고 빨간 부분 수정
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
/tistory/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml 복사후 같은 위치에 붙여넣기이름은 servlet-log.xml
/tistory/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml 열어서 위에서 적었던 빨간색 친부분은 도로 제거 또는 주석 처리
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
xmlns="http://www.springframework.org/schema/mvc"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing
infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving
up static resources in the ${webappRoot}/resources directory -->
<resources
mapping="/resources/**"
location="/resources/" />
<resources
mapping="/css/**"
location="/css/" />
<resources
mapping="/js/**"
location="/js/" />
<resources
mapping="/fonts/**"
location="/fonts/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources
in the /WEB-INF/views directory -->
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property
name="prefix"
value="/WEB-INF/views/" />
<beans:property
name="suffix"
value=".jsp" />
</beans:bean>
<!-- 패키지 어노테이션 스캔 설정 범위 설정 -->
<context:component-scan base-package="holy" />
</beans:beans>
/tistory/src/main/webapp/WEB-INF/spring/appServlet/servlet-log.xml 에서는 반대로 주석처리 또는 삭제.
참고로 위에서 xmlns:p="http://www.springframework.org/schema/p" 를 넣는거 깜빡해서 빨간줄 떳었다 넣어주자
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
xmlns="http://www.springframework.org/schema/mvc"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<beans:bean
id="loggerInterceptor"
class="holy.common.LoggerInterceptor"></beans:bean>
</mvc:interceptor>
</mvc:interceptors>
<beans:bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<beans:bean
class="org.springframework.web.servlet.view.BeanNameViewResolver"
p:order="0" />
<beans:bean
id="jsonView"
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</beans:beans>
이제 참조글 4번 할차례
우린 만들 필요 없다
이전글을 계속 따라해왔다면 그냥 바로 서버 가동 하면 된다.
그리고..
쿨럭;;;
뭔문제지...
심지어 로그가 너무 길어서 전부 중간에 짤렷다..
일단 로그 출력 량부터 늘리자;;
난 10배로 늘리고 가로 출력량을 제한 걸었다.
가로로 왔다갔다 보기 너무 불편..
서버 재구동 전에 화면 지우고
서버 실행
23:15:41,466 ERROR org.springframework.web.servlet.DispatcherServlet Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.
handler.MappedInterceptor#0': Cannot create inner bean 'loggerInterceptor' of type [holy.common.LoggerInterceptor] while
setting constructor argument; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Canno
t find class [holy.common.LoggerInterceptor] for bean with name 'loggerInterceptor' defined in ServletContext resource [
/WEB-INF/spring/appServlet/servlet-log.xml]; nested exception is java.lang.ClassNotFoundException: holy.common.LoggerInt
erceptor
왜 해당 클래스 파일을 못읽지.. 실단 서버 안으로 탐색해보자;;
아래처럼 임시 서버 파일을 열어보는 기능은 마르스 이상부터 지원한다
....해당 파일이 생성 안된다....
왜..?
하고 프로젝트 닫아서 열어보고
프로젝트 정리 기능 사용해보고
서버 클린 기능을 사용해보고서야 알았다..
난 구글 드라이브 사용하는데 이놈이 실시간 동기화를 하면서
서버 임시 폴더의 설정파일을 홀딩 시켜버리고 있었던것..
저걸 따로 빼놓던가 해야지 증말...
그래서..
서버에서 해당 프로젝트를 일단 빼고(안빼면 수정 안되더라)
서버 설정 들어간뒤 경로 수정
이제 저 임시파일이 구글드라이브로 동기화 되는일도 없을터이다..
'스프링' 카테고리의 다른 글
9) 서블렛 추가 (0) | 2015.10.19 |
---|---|
8) 스프링 로그 출력 (0) | 2015.10.19 |
7) 스프링 어노테이션 예제 리포지터리 annotation @Repository ,uikit scrollspy 사용법, c:forEach 사용 (0) | 2015.10.15 |
6) 어노테이션 예제 서비스 annotation @Service (0) | 2015.10.15 |
5) 어노테이션 예제 컨트롤러 annotation @Controller (0) | 2015.10.15 |
2) 스프링 프로젝트 폴더 파일 구조 분석 (2) | 2015.10.12 |
1) 스프링 프로젝터 생성하기 (0) | 2015.10.12 |