Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

log4j2 를 설정 해보자!

OpenSource/log4j&slf4j 2014.05.29 15:09
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



log4j.xml로 먼저 설정이 되어있다는 가정하에 진행을 해보도록 하겠습니다. 또한 maven 기반!!

당연히! SLF4J 를 사용하겠죵~~고고

룰루랄라 신나는 로그포제이 투! 설정 해보기! 두둥~


log4j.xml과 log4j2.xml이 필요 합니다.


log4j2 에 필요한 것!!!


1) pom.xml 에서의 설정!

2) log4j2.xml의 설정!

3) pojo단에서의 쓰임새!

요정도가 되겠네요! ㅎㅎㅎ


<< pom.xml 설정 >>

기본적으로 log4j설정은 아래와 같이 되어있습죠!

<!-- Logging -->

<dependency>

   <groupId>org.slf4j</groupId>

   <artifactId>slf4j-api</artifactId>

   <version>${org.slf4j-version}</version>

</dependency>


<dependency>

   <groupId>org.slf4j</groupId>

   <artifactId>jcl-over-slf4j</artifactId>

   <version>${org.slf4j-version}</version>

   <scope>runtime</scope>

</dependency>


<dependency>

   <groupId>org.slf4j</groupId>

   <artifactId>slf4j-log4j12</artifactId>

   <version>${org.slf4j-version}</version>

   <scope>runtime</scope>

</dependency>


<dependency>

   <groupId>log4j</groupId>

   <artifactId>log4j</artifactId>

   <version>1.2.15</version>

   <exclusions>

   <exclusion>

   <groupId>javax.mail</groupId>

   <artifactId>mail</artifactId>

   </exclusion>

   <exclusion>

   <groupId>javax.jms</groupId>

   <artifactId>jms</artifactId>

   </exclusion>

   <exclusion>

   <groupId>com.sun.jdmk</groupId>

   <artifactId>jmxtools</artifactId>

   </exclusion>

   <exclusion>

   <groupId>com.sun.jmx</groupId>

   <artifactId>jmxri</artifactId>

   </exclusion>

   </exclusions>

   <scope>runtime</scope>

</dependency> 



log4j2 셋팅!!


<!-- log4j2 setting  -->

    <!-- Binding for Log4J -->

 <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-slf4j-impl</artifactId>

    <version>${log4j2.version}</version>

  </dependency>

 

  <!-- Log4j API and Core implementation required for binding -->

 <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

    <version>${log4j2.version}</version>

 </dependency>

 

 <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-core</artifactId>

    <version>${log4j2.version}</version>

 </dependency>


출처 : 외국인 형이 정리를 잘해놨네요 감사! 

http://whoopdicity.blogspot.kr/2014/04/configuring-slf4j-with-log4j2-using.html

   

  

<< log4j2.xml 설정 >>

<?xml version="1.0" encoding="UTF-8"?>

<configuration status="WARN">

 <appenders>

  <Console name="Console" target="SYSTEM_OUT">

   <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />

  </Console>

 </appenders>

 <loggers>

  <root level="debug">

   <appender-ref ref="Console" />

  </root>

 </loggers>

</configuration>



<< POJO단 쓰임새 >>

import org.apache.logging.log4j.Logger; 

private static final Logger logger = LogManager.getLogger(LogInController.class); 


logger.info() or logger.debug() 등등 사용!!



<< 결과!! >>




참고 사이트 : http://logging.apache.org/log4j/2.x/manual/index.html


     - END -

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

통합 log 관련 테스트- AsyncAppender

OpenSource/log4j&slf4j 2014.03.13 19:39
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


 

 

 

2014/02/18 - [OpenSource/log4j&slf4j] - [Local] 통합log 처리 방법, log4j, SocketAppender + SocketHubAppender


2014/02/07 - [OpenSource/log4j&slf4j] - [log4j viewer] otroslogviewer (SocketHub 사용)


<< 테스트 시작 >>


ERROR 발생!

Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.7-b02 mixed mode):

"SimpleAsyncTaskExecutor-5788" prio=10 tid=0x00002aab080bd000 nid=0xbfc waiting for monitor entry [0x00002aab1c947000]

   java.lang.Thread.State: BLOCKED (on object monitor)

at org.apache.log4j.Category.callAppenders(Category.java:204)

- waiting to lock <0x00000006a05f3390> (a org.apache.log4j.spi.RootLogger)

at org.apache.log4j.Category.forcedLog(Category.java:391)

at org.apache.log4j.Category.log(Category.java:856)

at org.slf4j.impl.Log4jLoggerAdapter.debug(Log4jLoggerAdapter.java:204)

at org.apache.ibatis.logging.slf4j.Slf4jImpl.debug(Slf4jImpl.java:47)

at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:165)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:372)

at $Proxy307.insert(Unknown Source)

at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:237)

at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:79)

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40)


쓰레드 full 발생...Block 되는 현상 발생....먹통!! OTL


SocketAppender로 SocketServer 에 log를 전달 할 때 그 갯수가 많으면...

라인별로 쓰레드가 발생하는 것 같다. 고로 full이 나면 Block이 된다..-0-


<< 조치 사항 >>

AsyncAppender 도입하여 테스트를 해보자!


log4j.xml 내용

<appender name="async" class="org.apache.log4j.AsyncAppender">  

     <appender-ref ref="socket" />  

     <param name="Blocking" value="false"/>  

     <param name="bufferSize" value="256"/>  

     <param name="locationInfo" value="true" />

</appender>

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

     <param name="RemoteHost" value="${socket.server.info}" />

     <param name="Port" value="${socket.server.port}" />

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

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

      <param name="locationInfo" value="true" />

</appender> 


테스트 코드를 짜서 테스트를 해보자!

 


<< 참 조 >>

아래 붉은색 참조

http://wiki.apache.org/logging-log4j/SocketHubAppender

 

Sends LoggingEvent objects to a set remote a log servers, usually a SocketNode.

Acts just like SocketAppender except that instead of connecting to a given remote log server, SocketHubAppender accepts connections from the remote log servers as clients. It can accept more than one connection, and when a log event is handled, the event is sent to the set of currently connected remote log servers. Implemented this way it does not require any update to the configuration file to send data to another remote log server. The remote log server simple connects to the host and port the SocketHubAppender is running on.

However, given the nature of accepting connections on-the-fly, it cannot be guaranteed that all events will be received while the tcp connection is in process. But once connected, it should behave the same as SocketAppender.

This implementation borrows heavily from the SocketAppender implementation as an example.

The SocketHubAppender has the following properties:

·         If sent to a SocketNode, remote logging is non-intrusive as far as the log event is concerned. In other words, the event will be logged with the same time stamp, org.apache.log4j.NDC, location info as if it were logged locally by the client.

·         SocketHubAppenders do not use a layout. They ship a serialized LoggingEvent object to the server side.

  • Remote logging uses the TCP protocol. Consequently, if the server is reachable, then log events will eventually arrive at the server.
  • If no remote servers are attached, the logging requests are simply dropped.

·         Logging events are automatically buffered by the native TCP implementation. This means that if the link to server is slow but still faster than the rate of (log) event production by the client, the client will not be affected by the slow network connection. However, if the network connection is slower then the rate of event production, then the client can only progress at the network rate. In particular, if the network link to the the server is down, the client will be blocked.

On the other hand, if the network link is up, but the server is down, the client will not be blocked when making log requests but the log events will be lost due to server unavailability.

·         If the JVM hosting the SocketHubAppender exits before the SocketHubAppender is closed either explicitly or subsequent to garbage collection, then there might be untransmitted data in the pipe which might be lost. This is a common problem on Windows based systems.

To avoid lost data, it is usually sufficient to close the SocketHubAppender either explicitly or by calling the shutdown method before exiting the application.



http://fredpuls.com/site/softwaredevelopment/java/log4j/log4j_performance_tips.htm


          - To be Continue..... -




저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

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

OpenSource/log4j&slf4j 2014.02.18 17:28
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

<< 제 목 >>

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 -







저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[log4j viewer] otroslogviewer (SocketHub 사용)

OpenSource/log4j&slf4j 2014.02.07 22:59
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

otroslogviewer 사용하기(SocketHub 사용)


 다운로드

 log4j.xml 설정

 OtrosLogViewer SocketHub 설정 

 결과

 참고 사이트



<< 다운로드 >>

  https://code.google.com/p/otroslogviewer/downloads/detail?name=olv-2013-01-24.zip&can=1&q=



download 후 압축을 해제 하면 아래와 같이 실행 파일이 보인다. 떠블클릭 해준다~

(단, JDK가 깔려있어야 동작한다~~)


아래와 같이 OtrosLogViewer가 Welcome이라며~반겨준다. ㅎㅎㅎ 


이번에 해볼 것은 SocketHubAppender 이다.

어떻게 사용하는 것인가?? 간단히 말해 Hub를 WAS쪽 log4j.xml을 사용해서 띄워놓고, OtrosLogViewer에서

접속하여 log를 땡겨오면 되는 것이다.


<< log4j.xml 설정 >>

   1) appender 추가(SocketHubAppender)

        <appender name="socketHubAppender" class="org.apache.log4j.net.SocketHubAppender">

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

<param name="locationInfo" value="true" />

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

</appender> 


  2) appender-ref ref 추가

      <appender-ref ref="socketHubAppender" /> 


<< OtrosLogViewer SocketHub 설정 >>

File > Connect to Log4j Socket Hub 메뉴를 클릭 한뒤!  SocketHubAppender를 설정한 서버의 ip와 port를 넣어주면 된다. Test가 로컬이라서 localhost이지만 dev서버라면 해당 서버의 로그를 OtrosLogViewer를

통해 볼 수 있다. Good~^0^/



<< 결과 >>

위의 Socket Hub와 연결이 되어지면 로그가 tail 한 것처럼 자신의 로컬에서 볼 수 가 있으며

여러가지 옵션으로 골라 볼 수 도 있다.


Viewer는..찾아보다보니 여러가지가 있었다. 

  1) Chainsaw(http://en.wikipedia.org/wiki/Chainsaw_(log_file_viewer)) 

  2) LogExpert(http://logexpert.codeplex.com/)

  3) OtrosLogViewer

음...개인적으로 3번이 괜찮은 것 같다. ㅋㅋ 


<< 참고 사이트 >>

  http://www.youtube.com/watch?v=3PBym2C9i7k

동영상이며, 여러가지 사용하는 모습을 볼 수 있었다.


        - END -


저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

log4j를 알아보자

OpenSource/log4j&slf4j 2014.01.09 11:39
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

log4j..계속 사용만 해왔지 정리를 한적이 없어서 정리를 해본다.

1. log4j란?

2. log4j 구조

3. log4j level

4. log4j 간단한 예

5. 참고 사이트

 

[1] log4j 란?

   자바 어플리케이션에서 빠르고 효과적으로 로깅 할 수 있도록 도와주는 오픈소스이다.

 

[2] log4j 구조

   log4j는 크게 3가지의 큰 뼈대를 가지고 있다.

   (1) Logger(Category : 요녀석은 잘 쓰지 않는다) : logging 메시지를 Appender에 전달.

   (2) Appender : 전달된 로깅 메시지를 파일, 콘솔,DB에 저장 할 지 지정하는 역할을 한다.

   (3) Layout : Appender가 어디에 출력 할 것인지 결정했다면 어떠한 형식으로 출력을 할 지

                      출력 layout을 결정

    tip. <root> :

 

 

[3] log4j level

      logging 레벨은 TRACE < DEBUG < INFO < WARN < ERROR and FATAL 이며,

      1) FATAL : 가장 크리티컬한 에러가 났을 때 사용.

      2) ERROR : 일반 에러가 났을 경우 사용.

      3) WARN : 에러는 아니지만 주의할 필요가 있을 때 사용.

      4) INFO : 일반 정보를 나타날 때 사용.

      5) DEBUG : 일반 정보를 상세히 나타낼 때 사용.

      6) TRACE : 가장 레벨이 낮은 단계, 보통 DEBUG로 많이 하며 TRACE는 본적이...;;

 

      debug 레벨로 했다면 INFO~FATAL까지 모두 logging이 되어집니다.

      운영모드라면 INFO레벨로 하면 됩니다.

 

 

 [4] log4j 간단한 예

 

   1) Appender and Layout 설정

  <appender name="ACET_CONSOLE" class="org.apache.log4j.ConsoleAppender">
     <param name="Target" value="System.out"/>
     <param name="Threshold" value="TRACE"/>
  

    <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c{1}.%M():%L] - %m%n"/>
  </layout>

</appender>   

 

2) Logger

    <logger name="kr.pe.acet" additivity="false"> 
       <appender-ref ref="ACET_CONSOLE"/>
        <level value="DEBUG" />
    </logger>

 

우선 설명을 들어가기전에 기본적인 내용을 알고 가자!

<1> 로그 파일명 설정주기(DatePattern)

  위의 예제는 console이라 적용되어있지 않다.

  그래서 아래의 내용을 보도록 하자. 언제 파일을 분리시키면 되는가? 하는 설정이다.

  <param name="DatePattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS}"/>

 <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>

'.'yyyy-MM : 매달 첫번째날에 로그파일을 변경한다.

'.'yyyy-WW : 매주의 시작시 로그파일을 변경한다.

'.'yyyy-MM-dd : 매일 자정에 로그파일을 변경한다.

'.'yyyy-MM-dd-a : 자정과 정오에 로그파일을 변경한다.

'.'yyyy-MM-dd-HH : 매 시간의 시작마다 로그파일을 변경한다.

'.'yyyy-MM-dd-HH-mm : 매분마다 로그파일을 변경한다.

 

<2> PatternLayout 포맷

로그를 어떤 포맷으로 남길지 결정한다.

layout에는 HTMLLayout, PatternLayout, SimpleLayout, XMLLayout등이 있으며 PatternLayout이 일반적으로 가장 많이 쓰인다.

 

[표-1] 

형식

설명
%p debug, info, warn, error, fatal 등의 priority 가 출력된다.
%m 로그내용이 출력됩니다
%d 로깅 이벤트가 발생한 시간을 기록합니다.
포맷은 %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss, SSS}같은 형태로 사용하며 SimpleDateFormat에 따른 포맷팅을 하면 된다
%t 로그이벤트가 발생된 쓰레드의 이름을 출력합니다.
%% % 표시를 출력하기 위해 사용한다.
%n 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다.
%c 카테고리를 표시합니다 
예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다.
%C 클래스명을 포시합니다. 
예) 클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면 %C{2}는 xyz.SomeClass 가 출력됩니다
%F 로깅이 발생한 프로그램 파일명을 나타냅니다.
%l 로깅이 발생한 caller의 정보를 나타냅니다
%L 로깅이 발생한 caller의 라인수를 나타냅니다
%M 로깅이 발생한 method 이름을 나타냅니다.
%r 어플리케이션 시작 이후 부터 로깅이 발생한 시점의 시간(milliseconds)
%x 로깅이 발생한 thread와 관련된 NDC(nested diagnostic context)를 출력합니다.
%X

로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context)를 출력합니다.

 

 자! 이제 위의 내용을 분석해보자~~

 우선 눈에 들어오는 것은 PatternLayout과 DEBUG, ConsoleAppender 가 있다.

 

  <appender name="ACET_CONSOLE" class="org.apache.log4j.ConsoleAppender">
     <param name="Target" value="System.out"/>
     <param name="Threshold" value="TRACE"/>

 

를 보면 Console에 남기는 것이고, Threshold가 TRACE다. Threshold는 이 appender에 명시 된 priority와 같거나 높은 메시지만 로깅을 한다는 뜻이다.

 

<layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c{1}.%M():%L] - %m%n"/>
  </layout>

</appender>   

 

역시나 Conlsoe 출력이며, PatternLayout를 사용하며, ConversionPattern을 사용 한다.

ConversionPattern :  the ConversionPattern parameter controls the contents of each line of output inside the log file

 

위에 명시 된 [표-1]을 보고 분석해보자.

"[%p][%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c{1}.%M():%L] - %m%n"/>

              %p : debug, info, warn, error, fatal 등의 priority 가 출력된다.

              %d : 로깅 이벤트가 발생한 시간을 기록합니다.

                      포맷은 %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss, SSS}같은 형태로

                      사용하며   SimpleDateFormat에 따른 포맷팅을 하면 된다  

             %c : 카테고리를 표시합니다 예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다.

                      위의 예제는 %c{1} 이므로 전체가 출력 된다.

             %M : 로깅이 발생한 method 이름을 나타냅니다.

             %L : 로깅이 발생한 caller의 라인수를 나타냅니다

             %m : 로그내용이 출력됩니다

             %n : 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다.

             ex) [DEBUG][2014-01-09 14:42:03] [DEBUG] [DispatcherServlet.init():136] - Servlet 

                    'spring' configured successfully

         

 

[5] 참고 사이트

  1) http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

  2) http://logging.apache.org/log4j/2.x/manual/architecture.html     // log4j 아키텍처 그림 있음!

 

[6] 알아두면 좋은 Tip

   1) log4j1.2까지는 문제가 없으나 1.3부터는 category가 logger 태그로 흡수 되고, priority 태그가

       deprecated 취급을 하니 가능하면 logger, level 태그를 사용하는게 좋다.

     

  2) 아래의 내용은 어떻게 찍힐까??

     <logger name="kr.pe.acet">
         <level value="INFO" /> 

         <appender-ref ref="ACET_CONSOLE" />    
     </logger> 

 

     <root>

        <level value="DEBUG" />

        <appender-ref ref="ACET_CONSOLE" />

     </root>

 

root 카테고리에 DEBUG 레벨을 설정했으니, DEBUG 메시지도 출력되는게 맞는것이 아닌가하고 착각을 할 수 있는데, 설정한 logger(kr.pe.acet)의 로그 레벨이 INFO이므로, INFO 메시지까지만 출력이 된다. 즉, 해당 카테고리의 로그 레벨이 설정되어 있으면 그 로그 레벨을 따라간다는것이다. 

  (참조사이트 : http://blog.kangwoo.kr/54)


    3) http://sourceforge.net/p/mindtreeinsight/code/HEAD/tree/

        log를 보는 툴인 것 같다. 깔아서 사용은 하지 않았지만..소스를 받아서 분석은 하고 싶네요^^

  

추가 Tip

ex) <logger name="kr.pe.acet.dev" additivity="false">

부모격의 "kr.pr.acet" 의 logger로 설정이 되어있으면 중복으로 찍히는데 additivity의 옵션을 false로 

주면 중복으로 찍히지 않는다.



출처 : http://aircook.tistory.com/entry/log4j%EC%9D%98-additivity-%EC%98%B5%EC%85%98




   < 끝 >



  

 

 


저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

slf4j log 안나오는 현상 + Jboss

OpenSource/log4j&slf4j 2013.10.10 17:43
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

문제 : SQL문이 나오지 않는 현상이 발생했다.

 

아래의 오류를 통해서 수정하여 SQL구문이 나오게끔 했는데 

2013/07/12 - [OpenSource/log4j&slf4j] - SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder

 

default 에서는 위의 방법으로 SQL구문 로깅 되도록 처리를 했지만

cluster를 위해 all 에 적용을 하니..SQL구문이 나오지 않았다..-_-;;;;

 

환경 : JBoss eap 5.1

          jdk 6.0

          windows 7

 

참고 사이트 : https://community.jboss.org/thread/157454?start=0&tstart=0&_sscc=t

 

해결방법은 아래와 같다.

C:\jboss-eap-5.1\jboss-as\server\all\deployers\jbossweb.deployer\META-INF\war-deployers-jboss-beans.xml  에서

 

<<수정 전>>

<property name="filteredPackages">javax.servlet,org.apache.commons.logging</property>

 

<<수정 후>>  : org.slf4j를 추가 해주었다. 그랬더니 잘 나온다!!!

<property name="filteredPackages">javax.servlet,org.apache.commons.logging,org.slf4j</property>

 

이렇게 해도~~나오지 않는다!!! 라고 하면...JBoss쪽의 lib에 log관련 된 아이들을 다 넣어주면 잘 된다.

Jboss Bug인듯 싶다....Jboss eap5.1ver

 

  - 끝 -

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Error installing to Start: name=jboss:service=CorbaORB state=Create mode=Manual requiredState=Installed java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

OpenSource/log4j&slf4j 2013.10.08 11:37
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

 

 

 

 

오류 내역

09:28:26,333 ERROR [AbstractKernelController] Error installing to Start: name=jboss:service=CorbaORB state=Create mode=Manual requiredState=Installed

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory



해결방법

slf4j-api-1.6.6.jar  를 포함시켜 주면 된다.


어디다가???


jboss쪽에~ lib 밑에 넣어주면 된다.

ex) C:\Middleware\jboss-eap-5.1\jboss-as\server\블라블라\lib




참고 사이트 : 

http://stackoverflow.com/questions/12926899/java-lang-noclassdeffounderror-org-slf4j-loggerfactory


저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

package org.apache.log4j does not exist

OpenSource/log4j&slf4j 2013.10.08 09:27
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

오류 내역 : 

JUnit compile 시 package org.apache.log4j does not exist 라는 오류가 났다.


해결 방법 : 

Change the scope of the log4j dependency to compile or remove it.

scope를 compile 또는 주석처리 해주면 된다.


                <dependency>

                        <groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.16</version>

<exclusions>

<exclusion>

<groupId>javax.mail</groupId>

<artifactId>mail</artifactId>

</exclusion>

<exclusion>

<groupId>javax.jms</groupId>

<artifactId>jms</artifactId>

</exclusion>

<exclusion>

<groupId>com.sun.jdmk</groupId>

<artifactId>jmxtools</artifactId>

</exclusion>

<exclusion>

<groupId>com.sun.jmx</groupId>

<artifactId>jmxri</artifactId>

</exclusion>

</exclusions>

<!-- <scope>runtime</scope> -->

</dependency> 



참고 사이트 : http://stackoverflow.com/questions/8667640/maven-compilation-error-log4j


  - 끝 -


저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder

OpenSource/log4j&slf4j 2013.07.12 18:29
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

 

 

ERROR [STDERR] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
ERROR [STDERR] SLF4J: Defaulting to no-operation (NOP) logger implementation
ERROR [STDERR] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

 

라는 오류가 났다.....

 

환경 : maven 프로젝트

        jboss는 jboss5.1 eap

        log4j+slf4j 를 사용하는 내부..log툴 사용..--;; log4j를 사용한다고 보면 된다.^-^

 

 

[as-is 설정]

jcl-over-slf4j

slf4j-api

slf4j-log4j12

slf4j-parent

 

처음 셋팅은 sfl4j 관련 jar들이 1.5.10 이였다.

 

더보기

 

 

[as-is 설정 2]

C:\~\jboss-eap-5.1\jboss-as\server\default\lib 에..

slf4j-api-1.6.6.jar 라는 녀석이 있었다..

 

음..조금 이상하지만...내 pc에서는 설정2에 것을 지우면 slf4j가 1.5.이든 1.6이든 상관 없이 잘돌아갔다..

하지만 다른분 자리에서 해보니..

설정2는 지우면 안되고 pom.xml에서

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>jcl-over-slf4j</artifactId>
   <version>1.5.10</version>
   <scope>runtime</scope>
  </dependency>

 

위의 녀석을 주석 처리 함으로써(안쓰겠다) 오류가 나지 않았다.....OTL...

나의 짧은 지식으로 끝까지 파볼려하니 시간이 너무 많이 든다..ㅠ_ㅠ

 

참고 사이트 : http://stackoverflow.com/questions/11347859/slf4j-binding-error

 

암튼..OK JSP에서 찾았던 내용과 동일하게...jcl-over-slf4j 을 지우면 잘돌아간다.. 또한 설정2가 반드시 있어야 한다.

 

- 끝 -

 

 

 

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

  • Favicon of http://er1ca.tistory.com BlogIcon er1ca 2013.10.06 14:39 신고 답글 | 수정/삭제 | ADDR

    Failed to load class "org.slf4j.impl.StaticMDCBinder" 찾다보니 여기까지왔네요 ㅋㅋ
    dependeny 적용을 1.6버전부터 자동으로 안해줘서 생기는 문제라고해서 버전을 다운하면 되나봐요
    자세한 내용은 영어라.. ㅋㅋㅋ
    http://www.slf4j.org/codes.html#StaticLoggerBinder

    • Favicon of http://acet.pe.kr BlogIcon String Ace-T 2013.10.06 22:21 신고 수정/삭제

      헐 ㅋㅋㅋㅋㅋㅋ
      방가방가 -ㅁ-;;; jcl은 지워줘야되던데...
      안지워야하는 사람도 있고...Bug처럼 현상이 이래저래 달라서..
      애매한 부분이에요 ㅎㅎㅎ
      1.5여도 저는 된다능..ㅡㅡ;; jboss쪽에꺼 지우구요 ㅋㅋ

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바