일상/일기장

TIL.22.03.03 - Spring : 환경설정, Log

jmaster 2022. 3. 4. 00:19

spring 설정

spring.io 접속 해서 툴를 다운받거나 이클립스에서 확장프로그램 이용해서 다운

설치 방법

  1. eclipse 접속후 marketplace에서 Spring Tool 설치

 

2.spring explorer 설정

 

 

  • resources: 프로그램이 필요한 xml파일 저장 (log4j.xml, mybatis.xml)

src

  • main: 메인 프로그램 작성 시
  • →interface
  • webapp (jsp,html,css)
  • test: 테스트 프로그램 작성시

target

  1. 서버페이지에 들어가 module에서 경로 변경 : controller → spring

  • 라이브러리가 빌드가 안될경우 Deployment Assembly에 Maven Dependencies를 확인한후 없으면 Add를 선택하여 추가한다.

Project Facets에서 Dynamic Web Module과 Java 속성 변경

spring 라이브러리와 log4j 라이브러리 버전 업데이트

Maven : 빌드 툴 - 프로젝트의 라이브러리를 관리하는 프로그램

  • pom.xml : Maven 빌드 툴을 이용하여 프로젝트에 라이브러리를 빌드 하기 위한 정보를 제공하는 환경설정 파일
  • →로컬 저장소에 라이브러리 파일이 없는 경우 메이븐 저장소에서 다운로드 받아 저장
  • 로컬 저장소(Local Repository) : 프로젝트에 빌드될 라이브러리를 저장하여 제공하는 폴더→ mac에서는 터미널에서 “open ~/.m2” 명령어를 입력한 후 실행→라이브러리 빌드에 문제가 있는 경우 이클립스 종료 후 .m2 폴더의 라이브러리 파일 삭제

  • →사용자 폴더의 .m2(숨겨진 파일) 폴더 사용
  • 메이븐 저장소(Maven Repository) : https://mvnrepository.com/
  • properties : pom.xml 파일에서 자주 사용되는 값을 등록하기 위한 엘리먼트→하위 엘리먼트의 이름의 ${엘리먼트명} 형식으로 표현하여 엘리먼트의 내용을 값으로 제공
  • <properties> <java-version>1.6</java-version>//없어도 됨 <org.springframework-version>3.1.1.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties>
  • →라이브러리 버전을 효율적으로 관리
  • dependency : 빌드 처리하기 위한 라이브러리의 정보를 설정하는 엘리먼트
  • →의존 관계의 라이브러리 자동 빌드 처리
  • groupId : 라이브러리 그룹을 설정하기 위한 엘리먼트 (회사)
  • artifactId : 라이브러리 이름을 설정하기 위한 엘리먼트 (프로그램의 이름)
  • version : 라이브러리 버전을 설정하기 위한 엘리먼트
  • exclusions : exclusion 엘리먼트를 등록하기 위한 상위 엘리먼트
  • exclustion: 의존 관계의 라이브러리 중 제외 라이브러리를
  • scope : 라이브러리의 적용범위
  • →실행할 때 사용

<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				 </exclusion>
			</exclusions>
		</dependency>
</dependencies>

xerces:

=> 로그 구현체를 이용한 로깅 처리시 경로에 문제가 있는 경우 해결하기 위한 라이브러리

로깅 사용방법

log4j: 장치에 메세지를 기록하는 로그 구현 프로그램

→ log4j.xml 파일에 기록 관련 정보 설정

  • appender : 로그 전달 방식(로그매체)과 로그 형식을 설정하는 엘리먼트
  • name : appender 엘리먼트를 구분하기 위한 식별자를 속성값으로 설정
  • class : Appender 인터페이스를 상속받은 로그 구현 클래스를 속성값으로 설정
  • param : Appender 인스턴스 생성시 필요한 값을 제공하는 엘리먼트 ‘
  • → Appender 클래스마다 필요한 이름과 값이 다르게 설정
  • name 속성 : 전달값을 구분하기 위한 식별자를 속성값으로 설정
  • value 속성 : 전달값을 구분하기 위한 식별자를 속성값으로 설정
  • layout : 로그 형식을 설정하는 엘리먼트
    • param : Layout 인스턴스에 필요한 값을 제공하는 엘리먼트
    • PatternLayout 클래스는 로그 패턴 문자(Conversion Character)를 제공
  • class 속성 : 로그 형식을 제공하는 클래스를 속성값으로 설정
  • Conversion Character
    • %c : 패키지가 포함된 클래스 이름을 기록 - {정수값}을 이용하여 원하는 형식으로 변환 가능
    • → $c{1} : 패키지를 제외한 클래스 이름만 기록
    • %d : 날짜와 시간 기록 - {SimpleDateFormatPattern}을 이용하여 원하는 형식으로 기록 가능
    • →%d{yyyy-MM-dd} [년-월-일] 형식으로 날짜만 기록
    • %m : 로그 메세지 기록
    • %n : 엔터[Enter] 기록 -로그 줄바꿈
    • %M : 호출 메소드 이름 기록
    • %p : 로그 이벤트 기록 - TRACE > DEBUG > INFO > WARN > ERROR > FATAL
    • %r : 처리 시간 기록
    • %f : 처리 스레드 이름 기록
  • Conversion Character 자릿수 설정
    • %p : 로그 이밴트의 길이만큼 자릿수를 제공하여 기록
    • %자릿수p : 로그 이밴트의 최대 자릿수를 제공하여 기록
    • %.자릿수p : 로그 이밴트의 최소 자릿수를 제공하여 기록
    • %-자릿수p : 로그 이밴트의 최대 자릿수를 제공하여 기록(왼쪽 정렬)
<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>

logger

  • logger : 기록자(Appender)를 이용하여 로그를 구현하기 위한 엘리먼트
  • name : 기록자가 동작될 특정 패키지 경로를 속성값으로 설정
  • level : 로그 이벤트를 설정하기 위한 엘리먼트
  • value 속성 : 로그 이벤트를 속성값으로 설정
<logger name="xyz.itwill.controller">
	<level value="info" />
</logger>

Root Logger

  • root : 최상위 기록 정보(Logger)를 설정하기 위한 엘리먼트→모든 logger 엘리먼트는 root 엘리먼트의 기록 정보를 상속받아 상속
    • property : 기본 로그 이벤트를 설정하기 위한 엘리먼트
    • value 속성 : 로그 이벤트를 속성값으로 설정
    • appender-ref : 기록자를 설정하기 위한 엘리먼트
    • ref 속성 : appender 엘리먼트의 식별자를 속성값으로 설정
  • →모든 패키지의 클래스에서 기본적으로 적용되는 기록정보
<root>
		<priority value="warn" />
		<appender-ref ref="console" />
	</root>

Logger : 로그 구현체에게 기록을 전달하기 위한 인스턴스

LoogerFactory : Logger 인스턴스를 제공하기 위한 클래스

LoggerFactory.getLogger(Class<T> clazz) : 메모리에 저장된 클래스(Clazz)에서 발생된 기록을 로그 구현체에게 전달하는 Logger 인스턴스를 반환하는 메소드

Logger.info(String message) : 로그 이벤트를 발생하여 로그 구현체에게 메세지를 전달하는 메세지

DailyRollingAppend : 매일마다 바꿔가면서 기록하는 Append

<appender name="deilyLogFile" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="deilyLog" />
		<param name="DatePattern" value=".yyyy-MM-dd" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{HH:mm:ss}]%-5p %c - %m%n" />
	</layout>
</appender>

additivity 속성 false 또는 true 중 하나를 속성값으로 설정

→ false : root 엘리먼트의 appender 제외, true(기본값) : root 엘리먼트의 appender 포함

<logger name="xyz.itwill00.log" additivity="false">
		<level value="info"/>
		<appender-ref ref="sample"/>
		<appender-ref ref="deilyLogFile"/>
	</logger>