반응형

ConversionPattern 패턴 문자열 정의

%c (소문자)  : 로그 메시지의 카테고리 명

  - precision specifier 사용 가능 : precision의 기준으로 '.'을 기준으로 우측을 기준으로 함. specifier를 주지 않으면 Full Name

  - ex) aaa.bbb.ccc => %c{2} => "bbb.ccc", %c{1} => "ccc"
%C (대문자)  : 로그 모듈을 호출한 클래스의 FQCN

  - precision specifier 사용 가능 %c(소문자)와 동일한 rule 적용됨.
 %d (소문자)  : 날자 포맷 정의

  - date format specifier 사용 가능 : %d{date_pattern} 으로 사용함.
  - date pattern은 SimpleDateFormat의 포맷과 동일한 포맷을 사용 가능함.
  - date pattern이 정의되지 않은 경우 ISO8601 포맷을 사용함. 
  - date pattern에 ABSOLUTE, ISO8601, DATE의 문자열로 정의 가능
%F (대문자) : 로그 기록을 호출한 클래스의 파일 명 (.java 의 확장자 까지 나옴)

  - 이 기능은 성능에 큰 저하를 가져옴.
%l (소문자) : 로그를 호출한 파일의 위치를 기록함.

  - ex) com.ntechs.nbf.log.Log4JWriter.debug(Log4JWriter.java:235) 
  - JVM의 구현체에 따라 다를 수 있음. 일반적으로 FQCN과 method 명, File 명 : Line Number 가 나옴. 
%L (대문자) : 로그를 호출한 Caller 소스의 Line 번호.

  - 이 기능은 성능에 큰 저하를 가져옴.   
%m (소문자) : 로그 메시지
%M (대문자) : 로그를 호출한 Caller 메소드 명
%n (소문자) : 플래폼 의존적인 Line Separator
%p (소문자) : 로그의 Priority 문자열 - DEBUG, INFO, ERROR 등.
%r (소문자) : 레이아웃에 따라서 로그 문자열을 생성하는데 걸린 시간 경과 시간 (elapsed) 

  - 밀리세컨드 단위
%t (소문자) : 로그 이벤트를 생성한 쓰레드 명.
%x  (소문자) : 쓰레드와 관련된 NDC (Nested Diagnotic Context)
%X (대문자) :  쓰레드와 관련된 MDC (Mapped Diagnotic Context)
%% : % 문자를 로그에 기록할 때 사용

 

Conversion Pattern 정렬
"-" 문자를 사용하여 Left 정렬을 할 수 있다 지정되지 않은 경우에는 우측 정렬이 된다.

%[-][a].[b]와 같이 문자열을 지정하면 출력되는 문자의 포맷을 컨트롤 할 수 있다.

    "-"  : 우측/좌측 정렬 여부. "-'을 붙이면 좌측 정렬이 되고, 아니면 기본으로 우측 정렬이 됨. (

       [a] 값이 정의되어야 사용이 가능하며 기록할 문자열이 "10" 자인 경우 "%20C" 와 같이 설정을 하면 %C에 의한 문자열이 20자 이하인 경우에는 문자열을 우측으로 정렬을 하고 20자를 생성해준다. "%-20C"이면 좌측으로 정렬되고 20 byte의 문자열이 만들어진다. 빈 공간은 공백으로 처리된다.
    [a] : 로그 문자열이 지정된 a 값 보다 작은 경우에 Padding을 맞추어 준다. 즉 a=10인 경우 기록될 문자열이 5자이면 공백으로 5자가 만들어진다.
    [b] : 로그 문자열이 지정된 b 값 보다 작은 경우에는 상관 없지만 큰 경우에는 지정된 b 값만큰만 문자열을 커팅 한다. 단 커팅의 기준은 우측기준이 된다. 즉 "12345"이고 b=3인 경우에는 "345" 문자열이 기록된다. 

 

 

Conversion

Character

Effect
c 클래스 명  

예 ) %c{2} : "a.b.c" 는 "b.c".

C 클래스 명  

예) %C{1} : org.apache.xyz.SomeClass → SomeClass

d 날짜 형식  

예 ) %d{dd MMM yyyy HH:mm:ss,SSS} , %d{HH:mm:ss,SSS}

F 파일 명
l 이벤트를 발생시킨 Caller의 위치정보
L 이벤트를 발생시킨 Caller의 라인번호
m 이벤트 메세지
M 이벤트를 발생시킨 Caller의 함수명
n 라입구분자
p 로그이벤트 우선순위
r Application이 시작된 이후, 이벤트가 발생될 때까지 시간( milliseconds )
t 스레드의 이름을 출력
x NDC(nested diagnostic context)의 사용하기
X MDC (mapped diagnostic context) 사용하기   

예) %X{clientNumber} : clientNumber는 Key를 의미함

% %%는 화면에 %를 출력함

 

 

MDC vs NDC

원문 : wiki.apache.org/logging-log4j/NDCvsMDC

반응형
반응형

이클립스에서 jsp 파일 작성시
아래와 같이 ISO-8859-1 어쩌구 저쩌구 하면서 저장이 안되는 경우가 있다.

save could not be completed.
Reason:
some characters cannot be mapped using "ISO-8859-1" character encoding.
Either change the encoding or remove the characters which are not supported
by the "ISO-8859-1" character encoding.



구글에서 검색 후 해결 방법은

 

windows >Preferences > General > Content Types > Text > 파일 타입별로 지정

JSP > Default Encoding > EUC-KR 

[출처 : http://darky.egloos.com/2342814 ]

반응형
반응형

AbstractUrlHandlerMapping 를 상속받는 Handler Mapping Class

HanderMapping Class 설명
SimpleUrlHandlerMapping 패턴과 Controller의 이름을 비교하여,
url이 패턴에 매칭될 경우 지정한 컨트롤러를
사용한다.
BeanNameUrlHandlerMapping URL과 일치하는 이름을 갖는 빈을 컨트롤러로 사용한다.
ControllerClassNameHandlerMapping URL과 매칭되는 클래스 이름을 갖는 빈을 컨트롤러로 사용한다.
DefaultAnnotationHandlerMapping $RequestMapping 어노테이션을 이용하여 요청을 처리할
컨트롤러를 구현한다.


Controller Interface를 상속받는 Handler Contoller Interface

용도 INTERFACE] TEXT
단순처리 Controller
AbstractController
별도 기능을 제공하지 않는 컨트롤러.
요청파라미터 처리 등의 작업을 직접 구현해 주어야한다.
파라미터 맵핑 AbstractCommandController 요청 파라미터를 객체에 저장해 주며,
파라미터 값 검증 기능을 제공한다.
입력 폼 처리 SimpleFormController 폼을 출력하고 폼에 입력한 데이터를
처리할 때 사용된다.
다중 페이지
입력폼 처리
AbstractWizardFormController 여러 페이지에 걸쳐서 데이터를 입력하는 경우,
입력 폼의 흐름을 제어하고 입력한 데이터를 처리할 때
사용된다.
정적 뷰 매핑 ParameterizableViewController
UrlFilenameViewController
컨트롤러에서 어떤 기능도 수행하지 않고,
단순히 클라이언트의 요청을 뷰로 전달할때 사용된다.
다중 액션 MultiActionController 연관되거나 비슷한 로직을 수행하는 다수의
기능을 하나의 컨트롤러에서 구현할 때 사용된다
.

Spring이 제공하는 주요 ViewResolver 구현 Class

ViewResolver Class 설명
InternalResourceViewResolver 뷰 이름으로부터 JSP나 Tiles 연동을
위한 View 객체를 리턴한다.
VelocityViewResolver 뷰 이름으로부터 Velocity 연동을 위한
View 객체를 리턴한다.
BeanNameViewResolver 뷰 이름과 동일한 이름을 갖는 빈 객체를
View객체로 사용한다.
ResourceBundleViewResolver 뷰 이름과 View 객체 간의 맵핑 정보를
저장하기 위해 자원 파일을 사용한다.
XmlViewResolver 뷰 이름과 View 객체 간의 맵핑 정보를
저장하기 위해 XML 파일을 사용한다.
반응형

'Program > JAVA' 카테고리의 다른 글

Abstract Class란?  (0) 2010.09.16
JAVA에서 HashCode 값이 유일한가.?  (0) 2010.03.17
[ Factory Pattern ]  (0) 2010.02.07
Properties Class를 이용하여 설정파일 가져오기  (0) 2010.02.06
JAVA - LINUX 명령어 실행하는 방법  (0) 2010.02.06
반응형

GOF의 Design Pattern 에 보진 않았지만,

듣기로는 Factory Pattern를 알아야 기본적인 FrameWork를 이해할수있다고한다.

Interface를 이용하여 Factory클래스 생성후 객체를 찍어내는 방식이다.

머 말로하면 어렵고 예제를 보면쉽다. Factory란 의미가 무엇인가? 공장이다. 그럼 Java에서 객체를 찍어내는

공장이란 의미로 모두들 알수있을것이다.

아래 소스를보자.

======> Animal.java
public interface Animal {
 
 public void printDescription();

}

======> AnimalFactory .java
 public class AnimalFactory {

 public static Animal create(String name) {

  if (name.equals("cow")) {
   return new Cow();
  } else if (name.equals("cat")) {
   return new Cat();
  } else if (name.equals("dog")) {
   return new Dog();
  } else {
   return null;
  }

 }

}

=====> Cat.java
 public class Cat implements Animal {
    public void printDescription() {
        System.out.println("잠만자고있음");
    }
}
=====> Cow.java
public class Cow implements Animal {
    public void printDescription() {
        System.out.println("음메하기만함.");
    }
}
=====> Dog.java 
public class Dog implements Animal {
 public void printDescription() {
  System.out.println("주로 집 지킴");
 }
}

=====> Test.java
 public class Test {

 public static void main(String args[]) {
  Animal a1 = AnimalFactory.create("cow");
  a1.printDescription();
  Animal a2 = AnimalFactory.create("cat");
  a2.printDescription();
  Animal a3 = AnimalFactory.create("dog");
  a3.printDescription();
 }
}



위 소스를 보면 이해하기쉬울것이다. Animal이란 Interface에 만약 하나의 Class가추가 된다고 생각해 보아라.

의존관계를 따져보면 FactoryClass에만 코드를 추가하면 Test에서는 해당 Class를 사용만하면될뿐

Interface는 수정될 필요가없다.

또한 Test에서 객체의 타입을 지정해줄 필요도없는것이다.

Spring의 DI라는 구현방법이 존재한다. Dependency Injection의 약어인데 , 이 기법 도 공부해보길 바란다.

이 기법이 Factory 패턴이 좀 UPGRADE 된것이라고 보면된다.

아~~~ 글쓰기 좀 구찮다.

나만 알기쉽게 대충정리했는데 혹시 보다가 이해못하는 분은 걍 댓글다시오.. 구찮음.

반응형

+ Recent posts