위키백과(우리 모두의 백과사전)  -- 인용

아파치 log4j

 개발자  아파치 소프트웨어 재단
 최근 버전  1.2.15 / 2007년 9월 29일
 운영체제  크로스 플랫폼
 라이선스  아파치 2.0 라이선스
 웹사이트  http://logging.apache.org/log4j


log4j는  자바기반 로깅 유틸리티이다. 디버그용 도구로 주로 사용되고 있다.
log4j의 최근 버전에 의하면 높은 등급에서 낮은 등급으로의 6개 로그 레벨을 가지고 있다. 
설정 파일에 대상별(자바에서는 패키지)로 레벨을 지정이 가능하고 그 등급 이상의 로그만 저장하는 방식이다.

6개의 로그 레벨

FATAL
ERROR
WARN
INFO
DEBUG
TRACE



Log4J의 구조

[출처]http://kjunine.net/tag/log4j.properties


Logger

Log Message를 출력하는 방식을 분류하는 단위
Class 혹은 Package 단위로 Logger를 나눌 수 있어요.
그리고 출력할 Log Message의 Level을 지정할 수 있어요.

Appender

Log Message를 실제로 출력하는 녀석
Console, File, DB 등에 Log Message를 출력할 수 있어요.
각 Logger마다 다른 Appender를 설정해서
Class 혹은 Package 별로 다른 출력 방식을 적용할 수 있어요.

Layout

Log Message의 형태
Text, HTML 등의 형태로 Log Message를 출력할 수 있어요.


log4j.properties 설정

# Root Logger
log4j.rootLogger=INFO
# 바로 위처럼 Root Logger에 어떤 Appender도 설정하지 않으면 Root Logger는 Log Message를 출력하지 않아요.
# Console에서조차 다른 Package의 Log Message에는 관심이 없다면 위와 같이 해요. ^^/

# Custom Logger
log4j.logger.kjunine.test=INFO, console
# kjunine.test Package 하위의 Class에서만 Log Message를 출력해요.
log4j.logger.kjunine.test.sample_1=INFO, file-1
log4j.logger.kjunine.test.sample_2=INFO, file-2
# 각 Package 마다 다른 Appender를 적용시켜서 Package 별로 다른 파일에 Log Message를 출력해요.

# Console Appender 
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n

# File Appender
log4j.appender.file-1=org.apache.log4j.RollingFileAppender
log4j.appender.file-1.File=test-1.log
log4j.appender.file-1.MaxFileSize=10MB
log4j.appender.file-1.MaxBackupIndex=10
log4j.appender.file-1.layout=org.apache.log4j.PatternLayout
log4j.appender.file-1.layout.ConversionPattern=%d %p [%c] - %m%n

# File Appender
log4j.appender.file-2=org.apache.log4j.RollingFileAppender
log4j.appender.file-2.File=test-2.log
log4j.appender.file-2.MaxFileSize=10MB
log4j.appender.file-2.MaxBackupIndex=10
log4j.appender.file-2.layout=org.apache.log4j.PatternLayout
log4j.appender.file-2.layout.ConversionPattern=%d %p [%c] - %m%n





Posted by finewoo
,

기존 프로그래밍 언어에서는 프로그램에서 에러가 발생하면 에러를 적절히 처리하기가 상당히 어려웠다.
이는 언어 차원에서 에러를 처리할 수 있는 방법을 제공하지 않았기 때문이다.

에러는 여러 종류로 나눌 수 있다. 






여기서 문법적인 에러는 컴파일시 대부분 수정이 가능하다. 실행에러는 컴파일은 수행되었으나 실행시에 문제가 되는 경우로
논리적인 에러, 시스템에러, 예외 사항의 발생이다.
이중 논리적인 에러는 프로그래머가 코드를 잘못 작성해서 생기는 경우이며, 시스템적인 에러는 프로그래머의 의지와는
상관없이 발생하는 것이므로 프로그래머가 처리할 수 있는 방법은 없으며, 마지막으로 이제 다뤄볼 예외 사항이 발생하는 
경우이다.
예외사항은 정상적으로 프로그램이 동작중에 발생할 수 있는 여러가지 사항들이며 자바는 언어차원에서 이런 예외적인
사항의 처리를 지원하기 때문에 탄탄한 프로그램을 작성할 수 있다.


자바에서는 실행 시 발생할 수 있는 오류(Exception과 Error)를 클래스로 정의하였다. 
모든 클래스의 최상위 클래스는 Object클래스이므로 Exception과 Error클래스 역시 Object클래스의 하위클래스들이다. 

모든 예외의 최상위클래스는 Exception클래스이며, 상속계층도를 Exception클래스부터 도식화하면 다음과 같다. 





RuntimeException클래스들은 주로 프로그래머의 실수에 의해서 발생될 수 있는 예외들로서 자바의 프로그래밍 요소들과 관계가 깊다. 예를 들면, 배열의 범위를 벗어난다던가(IndexOutOfBoundsException), 값이 null인 참조변수의 멤버를 호출하려 했다던가(NullPointerException), 클래스간의 형변환을 잘못했다던가(ClassCastException), 정수를 0으로 나누려 했다던가(Arithmetic- Exception)하는 경우에 발생하는 예외들이다. 

RuntimeException클래스들 중의 하나인 ArithmeticException을 try-catch문으로 처리하는 경우도 있지만, 사실 try-catch문을 사용하기보다는 0으로 나누지 않도록 프로그램을 변경하는 것이 올바른 처리방법이다. 
이처럼 RuntimeException예외들이 발생할 가능성이 있는 코드들은 try-catch문을 사용하기 보다는 프로그래머들이 보다 주의 깊게 작성하여 예외가 발생하지 않도록 해야 할 것이다. 

그 외의 Exception클래스들은 주로 외부의 영향으로 발생할 수 있는 것들로서, 프로그램의 사용자들의 동작에 의해서 발생하는 경우가 많다. 예를 들면, 존재하지 않는 파일을 처리하려한다던지(FileNotFoundException), 실수로 클래스의 이름을 잘못 적었다던가(ClassNotFoundException), 입력한 데이터의 형식이 잘못되었다던가(DataFormatException) 하는 경우에 발생하는 예외들이다. 
이런 종류의 예외들은 반드시 처리를 해주어야 한다. 


RuntimeException클래스들 - 프로그래머의 실수로 발생하는 예외 
그 외의 클래스들 - 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외 

RuntimeException클래스들 그룹에 속하는 예외가 발생할 가능성이 있는 코드에는 예외처리를 해주지 않아도 컴파일 시에 문제가 되지 않지만, 그 외의 Exception클래스들 그룹에 속하는 예외가 발생할 가능성이 있는 예외는 반드시 처리를 해주어야 하며, 그렇지 않으면 컴파일시에 에러가 발생한다. 


 
Posted by finewoo
,


[fedora core11 기준  센드메일 설치 및 pop3, smtpauth 설정]

설치할 패키지
- sendmail : sendmail-8.14.3-5.fc11.i586
- dovecot : dovecot-1.2.6-3.fc11.i586
- sasl :cyrus-sasl-2.1.22-22.fc11.i586


1. sendmail 설치 및 설정
- 먼저 sendmail 설치여부 확인 

#rpm -qa |grep sendmail


- 패키지 정보가 없으면 새로 설치한다.
- 설치할 패키지 : sendmail-8.14.3-5.fc11.i586 인경우

#yum install sendmail-8.14.3-5.fc11.i586


2. dovecot 설치 및 설정
- pop3 나 imap 을 사용하기 위해 dovecot 패키지를 설치한다.
- dovecot은 기본 imap에 비해 보안등이 향상

#yum install dovecot-1.2.6-3.fc11.i586


* /etc/dovecot.conf 설정 변경

20라인 protocal = pop3
42라인 listen = *, [::] 


# service dovecot start
Dovecot Imap (을)를 시작 중:                               [  OK  ]


- telnet 으로 110번 포트 pop3 접속 확인

# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.



3. sendmail 설정

- /etc/mail/sendmail.mc 편집
- smtp인증기능 추가위해 아래 라인 주석제거

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

* smtp인증은 outlook 또는 eudora등과 같은 메일클라이언트 프로그램으로 메일서버를 통해 메일을 전송하고자 할때 /etc/mail/access 엑세스 허용파일에서 릴레이를 허용할 IP를 지정하는 방식보다 사용자 아이디와 암호 확인을 통해서 메일 전송을 허용함으로써 메일서버가 스펨경유지로 사용되는 것을 방지할 수 있다.


- 설정파일 변경 적용

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf


- /etc/mail/sendmail.cf 에서 아래와 같이 addr=127.0.0.1 부분을 제거

 (O DaemonPortOptions=Port=smtp, Name=MTA )


- /etc/mail/local-host-names : 메일을 수신할 호스트이름 추가

test.co.kr or mail.test.co.kr


4. SMTPAUTH 인증을 위한  SASL 라이브러리가 설치여부 확인 및 서비스 시작

cyrus-sasl-md5-2.1.22-22.fc11.i586
cyrus-sasl-plain-2.1.22-22.fc11.i586
cyrus-sasl-lib-2.1.22-22.fc11.i586
cyrus-sasl-2.1.22-22.fc11.i586
[root@test]# service saslauthd restart 


5. sendmail 데몬 시작

#service sendmail start


- telnet 25번 포트로 접속해서 아래와 같은 화면이 출력되는지 확인.

* SMTPAUTH 인증확인

[root@(none) ~]# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 (none) ESMTP Sendmail 8.14.3/8.14.3; Tue, 22 Dec 2009 00:44:24 +0900
ehlo localhost
250-(none) Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP


ehlo localhost로 나타나는 메시지 중 위와 같이
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
가 나타나면 정상적으로 인증기능이 구동중인 것이다.
이메일 클라이언트에서 보내는 메일서버 인증기능 체크후 아이디와 암호를 입력하면 메일서버를 통해 정상적으로 
이메일을 전송할 수 있다.





'Linux' 카테고리의 다른 글

[Linux] CentOS5.3 에 JAVA(JDK) 설치  (0) 2010.02.28
MySQL설치중 오류:error: No curses/termcap library found  (1) 2009.11.24
Posted by finewoo
,