📄 main.java
字号:
/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */package org.apache.log4j.chainsaw;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.util.Properties;import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JTable;import javax.swing.ListSelectionModel;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;/** * The main application. * * @author <a href="mailto:oliver@puppycrawl.com">Oliver Burn</a> */public class Main extends JFrame{ /** the default port number to listen on **/ private static final int DEFAULT_PORT = 4445; /** name of property for port name **/ public static final String PORT_PROP_NAME = "chainsaw.port"; /** use to log messages **/ private static final Logger LOG = Logger.getLogger(Main.class); /** * Creates a new <code>Main</code> instance. */ private Main() { super("CHAINSAW - Log4J Log Viewer"); // create the all important model final MyTableModel model = new MyTableModel(); //Create the menu bar. final JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); final JMenu menu = new JMenu("File"); menuBar.add(menu); try { final LoadXMLAction lxa = new LoadXMLAction(this, model); final JMenuItem loadMenuItem = new JMenuItem("Load file..."); menu.add(loadMenuItem); loadMenuItem.addActionListener(lxa); } catch (NoClassDefFoundError e) { LOG.info("Missing classes for XML parser", e); JOptionPane.showMessageDialog( this, "XML parser not in classpath - unable to load XML events.", "CHAINSAW", JOptionPane.ERROR_MESSAGE); } catch (Exception e) { LOG.info("Unable to create the action to load XML files", e); JOptionPane.showMessageDialog( this, "Unable to create a XML parser - unable to load XML events.", "CHAINSAW", JOptionPane.ERROR_MESSAGE); } final JMenuItem exitMenuItem = new JMenuItem("Exit"); menu.add(exitMenuItem); exitMenuItem.addActionListener(ExitAction.INSTANCE); // Add control panel final ControlPanel cp = new ControlPanel(model); getContentPane().add(cp, BorderLayout.NORTH); // Create the table final JTable table = new JTable(model); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); final JScrollPane scrollPane = new JScrollPane(table); scrollPane.setBorder(BorderFactory.createTitledBorder("Events: ")); scrollPane.setPreferredSize(new Dimension(900, 300)); // Create the details final JPanel details = new DetailPanel(table, model); details.setPreferredSize(new Dimension(900, 300)); // Add the table and stack trace into a splitter final JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, scrollPane, details); getContentPane().add(jsp, BorderLayout.CENTER); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent aEvent) { ExitAction.INSTANCE.actionPerformed(null); } }); pack(); setVisible(true); setupReceiver(model); } /** * Setup recieving messages. * * @param aModel a <code>MyTableModel</code> value */ private void setupReceiver(MyTableModel aModel) { int port = DEFAULT_PORT; final String strRep = System.getProperty(PORT_PROP_NAME); if (strRep != null) { try { port = Integer.parseInt(strRep); } catch (NumberFormatException nfe) { LOG.fatal("Unable to parse " + PORT_PROP_NAME + " property with value " + strRep + "."); JOptionPane.showMessageDialog( this, "Unable to parse port number from '" + strRep + "', quitting.", "CHAINSAW", JOptionPane.ERROR_MESSAGE); System.exit(1); } } try { final LoggingReceiver lr = new LoggingReceiver(aModel, port); lr.start(); } catch (IOException e) { LOG.fatal("Unable to connect to socket server, quiting", e); JOptionPane.showMessageDialog( this, "Unable to create socket on port " + port + ", quitting.", "CHAINSAW", JOptionPane.ERROR_MESSAGE); System.exit(1); } } //////////////////////////////////////////////////////////////////////////// // static methods //////////////////////////////////////////////////////////////////////////// /** initialise log4j **/ private static void initLog4J() { final Properties props = new Properties(); props.setProperty("log4j.rootLogger", "DEBUG, A1"); props.setProperty("log4j.appender.A1", "org.apache.log4j.ConsoleAppender"); props.setProperty("log4j.appender.A1.layout", "org.apache.log4j.TTCCLayout"); PropertyConfigurator.configure(props); } /** * The main method. * * @param aArgs ignored */ public static void main(String[] aArgs) { initLog4J(); new Main(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -