2014-12-09 4 views
-2

안녕하세요 MySQL의 테이블에서 오는 로그 파일에 항목을 쓸 요구가 있습니다. 나는 나의 연구를했지만, 내가 찾은 해결책에 만족하지 못했다. 로그 수준을 디버그로 사용하여 SQL 쿼리가 올바르게 실행되고 있는지 여부를 확인하는 방법에 대해 읽었습니다.log4j2를 사용하여 로그 파일에 데이터를 기록 하시겠습니까?

하지만 데이터를 다른 로그 파일에 기록하지 않고 SQL 테이블의 데이터 만 기록하도록합니다. 누구든지 도와 줄 수 있습니까?

다음은 POC로 작성한 코드입니다. 이것은 내 수업 부분입니다.

private static final Logger logger = LogManager.getLogger(LogDemo.class.getName()); 
private static final Marker QUERY_MARKER = MarkerManager.getMarker("SQL"); 

public static void main(final String... args) { 

// Set up a simple configuration that logs on the console. 
    logger.info("Ankush Bhan created this"); 
    logger.error("THIS IS TRACE"); 


} 

는 그리고 이것은 내 구성 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="DEBUG"> 
    <Properties> 
    <Property name="log-path">C:/Users/712054/Desktop/Source</Property> 
    </Properties> 
    <Appenders> 
    <RollingFile name="info" fileName="${log-path}/info.log" 
       filePattern="${log-path}/myexample-%d{yyyy-MM-dd}-%i.log"> 
       <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> 
       <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/> 
     <PatternLayout> 
     <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
     <SizeBasedTriggeringPolicy size="1 MB"/> 
     </Policies> 
     <DefaultRolloverStrategy max="4"/> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 

    <Root level="info" > 
     <AppenderRef ref="info"/> 
    </Root> 
    </Loggers> 
</Configuration> 

내가 이것을 실행

이다, 모두 문은 인쇄 얻고있다. 하지만 log.info 부분 만 원하십니까 ??

+0

당신은 아직 아무것도 시도 해 봤나입니까? – Raptor

+0

간단한 log.info를 사용하여 로그 파일에 로그인하고 구성 파일에 정보 부분 만 기록하는 필터를 넣어 보았습니다. 그러나 우리가 할 수있는 다른 방법이 있습니까? –

+0

jdbc를 사용하여 mysql 테이블을 읽고 log4j2를 사용하여 로그하는 간단한 해결책이 효과적 일 것으로 보인다. Log4j2는이 클래스/로거에 대한 별도의 파일에 로그를 기록하도록 구성 할 수 있습니다. 어떤 합병증? –

답변

0

그래서 나는 마침내 필터를 사용하여 문제를 해결했습니다. 다음은 로그 파일에 메시지를 출력하는 Java 클래스입니다. 그리고 다른 로그 파일에서 추적 메시지를 추가합니다. 이것은 내가 편집 한 구성 파일입니다.

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="DEBUG"> 
    <Properties> 
    <Property name="log-path">C:/Users/712054/Desktop/Source</Property> 
    </Properties> 
    <Appenders> 
    <RollingFile name="info" fileName="${log-path}/info.log" 
       filePattern="${log-path}/myexample-%d{yyyy-MM-dd}-%i.log"> 
     <Filters> 
      <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> 
     </Filters> 
     <PatternLayout> 
     <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
     <TimeBasedTriggeringPolicy size="1"/> 
     </Policies> 

    </RollingFile> 
    <RollingFile name="trace" fileName="${log-path}/trace.log" 
       filePattern="${log-path}/myexample-%d{yyyy-MM-dd}-%i.log"> 
     <Filters> 
      <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="debug" onMatch="DENY" onMismatch="NEUTRAL"/> 

      <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/> 
     </Filters> 
     <PatternLayout> 
     <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
     <TimeBasedTriggeringPolicy size="1"/> 
     </Policies> 

    </RollingFile> 
    </Appenders> 
    <Loggers> 

    <Root level="all" > 
     <AppenderRef ref="info"/> 
     <AppenderRef ref="trace"/> 
    </Root> 
    </Loggers> 
</Configuration> 

그리고 해당 자바 클래스는

public class LogDemo { 

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


    public static void main(final String... args) { 
    logger.entry(); //this goes in the trace log file 
    // Set up a simple configuration that logs on the console. 
     logger.info("This goes only in the info log file"); 
     logger.trace("This goes only in the trace log file"); 
     logger.exit(); //this goes in the trace log file 


    } 
관련 문제