본문 바로가기
OpenSource/log4j&slf4j

[Local] 통합log 처리 방법, log4j, SocketAppender + SocketHubAppender

by 태하팍 2014. 2. 18.
반응형

<< 제 목 >>

SocketAppender + SocketHubAppender를 이용한 통합 Log

 

<< 목 적 >>

하나의 깡통에 여러개의 node로 분리가 되어있어서 log 보기 어려우셨죠?

로그를 소켓 서버를 띄워서 거기로 모아보겠습니다. 그 소켓서버는 로컬에서 접속을 할 수 있도록

socketHub를 띄운 뒤 local에서는 viewer를 통해 socket hub에 접속! 하여 통합된 로그를 보도록 할 것 입니다.

참 쉽죠잉?? 한마디로 통합 로그!!

 

<< 그 림 >>

 

 

<< 환 경 >>

OS : Win 7 , 64bit

Jdk : 1.6



<< Socket Server 작동!! >>

cmd창에서 log4j-1.2.17.jar와 log4j-server.properties가 있는 곳으로 이동하여 아래의 명령어를 실행.

java -classpath ./log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 8081 log4j-server.properties

Tip. 여러개의 jar를 필요에 의해 같이 묶을 수 있다.[ ; 로 구분해서 뒤에 붙여주면 된다. ^-^good~]

ex) C:\Users\acet\Downloads>java -classpath ./log4j-1.2.17.jar;./acetCmn-1.0.jar;./log4kt-1.6.jar org.apache.log4j.net.SimpleSocketServer 8081 log4j-server.properties


동작 시 아래와 같이 로그들이 보입니다^^;

 

log4j=server.properties 내용


log4j.rootLogger=DEBUG, CA, FA, HU

#

log4j.appender.CA=org.apache.log4j.ConsoleAppender

log4j.appender.CA.layout=org.apache.log4j.PatternLayout

log4j.appender.CA.layout.ConversionPattern=[%d] [%t] [%m]%n

log4j.appender.CA.Threshold=DEBUG


#

log4j.appender.FA=org.apache.log4j.FileAppender

log4j.appender.FA.File=result.log

log4j.appender.FA.layout=org.apache.log4j.PatternLayout

log4j.appender.FA.layout.ConversionPattern=[%d] [%t] [%m]%n

log4j.appender.FA.Threshold=DEBUG


#

log4j.appender.HU=org.apache.log4j.net.SocketHubAppender

log4j.appender.HU.port=9999

log4j.appender.HU.locationInfo=true


# Tip. RollingFileAppender 부분~

1) rootLogger에 추가 : log4j.rootLogger=RFA

2) Appender에 추가 

log4j.appender.RFA=org.apache.log4j.RollingFileAppender

log4j.appender.RFA.File=loging.log

log4j.appender.RFA.MaxFileSize=1MB

log4j.appender.RFA.MaxBackupIndex=1

log4j.appender.RFA.layout=org.apache.log4j.PatternLayout

log4j.appender.RFA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n



<< log4j.xml 셋팅 - Local PC 2대 설정 >>

 1) SocketAppender 설정

<appender name="socket" class="org.apache.log4j.net.SocketAppender">  

    <param name="Port" value="8081" />  

    <param name="RemoteHost" value="xx.xxx.xxx.xx" />  

    <param name="ReconnectionDelay" value="10000" />  

    <param name="Threshold" value="ALL" />  

</appender> 


<param name="locationInfo" value="true" /> 이녀석을 통해..locationInfo를 기대해보았지만...음..차이를 못느끼겠다. OTL =3=3



<< TEST 시나리오 >>

1) Socket Server를 기동

2) 이기종 Local PC 프로젝트 기동

3) OtrosLogViewer 기동 및 SocketHub Connection

4) Log 발생(Local PC 2대)

아래처럼 web에서 로그를 발생 시킵니다.

5) SocketHub를 통해 확인

   아래와 같이 OtrosLogViewer 를 통해서 확인 합니다.



<< 결과 >>

결과적으로 OtrosLogViewer에서 2개의 로컬 PC log에 대해 확인을 할 수 가 있었다. Good~!!^-^/

또한 Thread의 포트로 구분이 가긴한다..

http-8080-5  / http-bio-8086-exec-12

 

 

<< 아쉬운 점.. >>

아쉬운 점으로는..SocketHubAppender가...layout을 설정을 할 수가 없어서..아쉽다..ㅋㅋ

혹은 OtrosLogViewer에서 UI에서 내가 나타내고자하는 정보가 없다..나타내려면 오픈소스를 수정해야 할 듯 싶다.

소스를 조금 볼려고 했더니..github...공부 할 때가 온것 같다 ㅋㅋㅋㅋ대세라 카던데..암튼 이상 입니다^^;


                                          - END -







반응형