2012-11-06 2 views
0

NetBeans에서 Java Swing을 사용하여 업계 용 ERP를 개발 중입니다. log4J을 사용하여 발생한 예외를 기록하고 싶습니다! 및 AOP. 나는 많은 검색을했으나 대부분의 예제가 웹 프레임 작업 (예 : Spring) 용이므로 Swing 기반 응용 프로그램과 AOP의 통합을 얻지 못했습니다. 미리 감사드립니다.Java Swing 응용 프로그램에서 예외 로깅을위한 Log4j 및 AOP 포함

+0

로거를 주사하고 싶습니까? –

+0

@kriegaex는 이미 언급했듯이 귀하의 질문이 너무 광범위합니다 (투표 마감). 구체적인 코딩 문제로 분해하십시오. – kleopatra

+0

나는이 사람이 늙었지만 여전히 답이없는 사람으로 열거되어 있음을 안다. 받아 들일 것이고 내 대답을 상향 조정하는 것이 적절하다고 생각하십니까? 감사. – kriegaex

답변

3

문제점을 보지 못했습니다. 자바 클래스 만 사용하고 있습니다. 다른 Java 클래스에 AspectJ을 적용 할 수 있으면 Swing 클래스에도 적용 할 수 있습니다. 한번 시도 해보면, AspectJ로 AOP는 기본 개념을 이해하면 정말 재미있을 것이다. 구체적인 질문이 있으시면 가능한 한 도와 드리겠습니다.


는 업데이트 : 좋아, 난 그냥 약간의 여유 시간이 있었고, 당신을 위해 빠른 데모를 해킹 일부 sample code을 사용했다.

최소 스윙 예를 들어 두 개의들이 RuntimeException, 메인 창을 만드는 동안 하나 팝업 대화 상자에서 "확인"을 클릭 다른 던지는 :

import java.awt.event.*; 
import javax.swing.*; 

public final class MinimalSwingApplication { 
    public static void main(String... aArgs) { 
     MinimalSwingApplication app = new MinimalSwingApplication(); 
     app.buildAndDisplayGui(); 
    } 

    private void buildAndDisplayGui() { 
     JFrame frame = new JFrame("Main window"); 
     buildContent(frame); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    private void buildContent(JFrame aFrame) { 
     JPanel panel = new JPanel(); 
     panel.add(new JLabel("Hello")); 
     JButton ok = new JButton("Show pop-up dialog"); 
     ok.addActionListener(new ShowDialog(aFrame)); 
     panel.add(ok); 
     aFrame.getContentPane().add(panel); 
     throw new RuntimeException("Oops!"); 
    } 

    private static final class ShowDialog implements ActionListener { 
     private JFrame fFrame; 

     ShowDialog(JFrame aFrame) { 
      fFrame = aFrame; 
     } 

     public void actionPerformed(ActionEvent aEvent) { 
      JOptionPane.showMessageDialog(fFrame, "I am the a pop-up dialog"); 
      throw new RuntimeException("Something unexpected happened here"); 
     } 
    } 
} 

JDK를 사용하여 (예외를 기록 샘플 측면을 로깅,하지만 당신은 쉽게) Log4J를 전환 할 수 있습니다 :

import java.util.logging.*; 

public aspect SwingExceptionLogger { 
    static Logger logger = Logger.getLogger(SwingExceptionLogger.class.getName()); 

    Object around() : execution(* MinimalSwingApplication..*(..)) { 
     try { 
      return proceed(); 
     } catch (Exception e) { 
      logger.log(Level.WARNING, "Swing exception: " + e.getMessage()); 
      return null; 
     } 
    } 
} 

샘플 출력을 팝업 두 번 대화/응용 프로그램과 개방을 시작 닫는 :

10.11.2012 09:42:28 MinimalSwingApplication buildContent_aroundBody5$advice 
WARNUNG: Swing exception: Oops! 
10.11.2012 09:42:33 MinimalSwingApplication$ShowDialog actionPerformed_aroundBody1$advice 
WARNUNG: Swing exception: Something unexpected happened here 
10.11.2012 09:42:37 MinimalSwingApplication$ShowDialog actionPerformed_aroundBody1$advice 
WARNUNG: Swing exception: Something unexpected happened here 

원하는 경우 AWT/Swing 스레드의 로그 만 기록하도록 포인트 컷을 수정할 수 있습니다. 예외를 삼키는 대신 예외를 다시 던질 수도 있습니다. 실험이나 물어보십시오.

+0

AOP pointcuts 및 스윙 기반 응용 프로그램 기능을 사용하여 몇 가지 예를주세요. –

+0

AOP pointcuts 및 스윙 기반 응용 프로그램과 다른 기능을 사용하여 몇 가지 예제를 제공하십시오. @kriegaex –

+2

구체적인 문제 및 일부 샘플 코드를 사용하십시오. . 나는 여기에 아무도 당신을 위해 완전한 예제 또는 튜토리얼을 만들고 싶어하지 않는다고 생각합니다. AspectJ를 사용해 본 경험이 있습니까? 범위를 좁혀주세요. – kriegaex

관련 문제