오늘은 어디로 갈까...

chainsaw 본문

넋두리

chainsaw

剛宇 2009. 3. 2. 09:39
요즘 이사준비로 정신이 없다.
왜이렇게 짐이 많은지....
왠만한건 다 버릴려고 해도, 책이랑 문서는 이상하게 버릴수가 없다...
전혀 관리를 안해줬더니 곰팡이랑 동거를 시작해버린 종이들...
아 슬프다... ㅠㅠ
하지만, 더 슬픈것은...
짐 싸다 말구, 책들을 읽고 있는 나의 불쌍한 모습...
흑흑 ㅠㅠ 병이로다...

그 책들속에서 한장의 종이를 발견했는데, 거기에는 자바 코드가 있었다.
열심히 머리를 굴려본결과, 예전에 만든 로그 뷰어의 코드 같았다. (org.apache.log4j.net.SocketAppender를 응용해서, 다수의 서버에서 발생하는 로그를 한곳에서 모니터링하는 그런 프로그램이다.) 그리고 그 코드 옆에 chainsaw라는 낙서가 적혀있었는데... chainsaw? 전기톱? 저걸 왜 적어놨지?

 한참 고민을 해보니, 이 로그뷰어를 만들면서 알게된 chainsaw 라는 프로그램이었다. (아, 이놈을 좀더 빨리 알았더라면 많은 삽질을 줄였을텐데. ㅠㅠ). 이놈도 log4j용 로그 뷰어이다. 현재는 버림받은 프로젝트가 되어버렸는지 업데이트가 되지 않는거 같다.
처음에 chainsaw 이라는 작명센스를 보고 얼마나 웃었던지, 누가 이름을 붙였는지 몰라도, 참 멋진놈이라 생각했었다. 굳이 한글로 번역하자면 log(통나무), logger(나뭇꾼), chainsaw(전기톱)쯤 되지 않을까. 이 얼마나 멋진 발상인가. (원래 의도는 잘 모른다. 혼자만의 생각이다.)
흠흠. 본론으로 돌아와서 chainsaw는 아래 사이트에 가면 내려받을 수 있다.

http://logging.apache.org/chainsaw/

백문이불여일견이라고 아래 그림을 보면 대충 이해가 갈것이다.

설정 방법은 그리 어렵지 않으니 생략~하겠다.(사실 모른다.. ㅋㅋㅋ)

이 chainsaw는 서버 및 클라이언트 역할을 모두 소화해내는 능력 좋은 놈이다.즉, SocketAppender의 서버 역할은 물론, SocketHubAppender의 클라이언트 역할도 한다.
서버 역할로서 간단히 맛을 볼려면, 로그를 출력할 클라이언트단에서 아래처럼 log4j.xml에 Appender를 추가해준다음, appender-ref를 걸고,
	<appender name="REMOTE" class="org.apache.log4j.net.SocketAppender">
		<param name="Threshold" value="ALL"/>
		<param name="RemoteHost" value="127.0.0.1"/>
		<param name="Port" value="4560"/>
		<param name="ReconnectionDelay" value="100000"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d %p [%c] - <%m>%n"/>
		</layout>
	</appender>

(다른 Appender랑 다르게 Layout이 정의하지 않아도 된다. 로그이벤트 객체 자체를 던져 버리니 레이아웃 자체가 무의미하다.)

Chainsaw쪽에서 SocketReceiver를 만들면 원격으로 로그를 볼 수가 있다.
이 모드(?)를 이용하면 n개의 클라이언트에서 출력하는 로그 메시지를 한곳에서 볼 수 있어, 모니터링하기에 편하다.

물론, 반대(?)기능까지 지원한다. 로그를 출력하는 쪽이 서버 역할을 해서 n개의 클라이언트에서 해당 서버의 로그를 볼 수 있는것이다. 테스트 서버나 스테이징 서버일 경우 일반(?) 개발자는 접속에 제한을 받아서 로그를 보기가 쉽지 않다. 그럴경우 이 기능을 사용하면 로그만 볼 수 있어서 해당 서버의 접속 권한이 없더라로 로그를 확인할 수 있는것이다.




요즘은 파이어폭스 플러그인으로 나온 LogDigger라는 놈도 있는데, 브라우저로 로그를 볼 수 있다.(물론 파폭만~~~)