You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@logging.apache.org by sd...@apache.org on 2010/09/17 09:41:29 UTC
svn commit: r998011 - in
/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw:
ChainsawCyclicBufferTableModel.java Generator.java LogPanel.java
TableColorizingRenderer.java
Author: sdeboy
Date: Fri Sep 17 07:41:28 2010
New Revision: 998011
URL: http://svn.apache.org/viewvc?rev=998011&view=rev
Log:
Layout improvements
- You can now click anywhere in the throwable column (only if the column contains an exception) to get the throwable dialog containing the stack trace
- Updated tutorial event generator to include throwable info
- Added a left indent of 6 to textpanes used to render the table to provide some whitespace between text entries in the columns
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java Fri Sep 17 07:41:28 2010
@@ -765,11 +765,6 @@ class ChainsawCyclicBufferTableModel ext
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
public boolean isCellEditable(int rowIndex, int columnIndex) {
- switch (columnIndex + 1) {
- case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
- return true;
- }
-
if (getColumnName(columnIndex).toLowerCase().equals(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE)) {
return true;
}
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java Fri Sep 17 07:41:28 2010
@@ -17,13 +17,18 @@
package org.apache.log4j.chainsaw;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
import org.apache.log4j.NDC;
import org.apache.log4j.helpers.Constants;
import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.spi.LocationInfo;
import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.ThrowableInformation;
/**
@@ -51,11 +56,13 @@ public class Generator extends Receiver
private LoggingEvent createEvent(
Level level, Logger logger, String msg, Throwable t) {
+ ThrowableInformation ti = new ThrowableInformation(t);
+ Map properties = new HashMap();
+ properties.put(Constants.APPLICATION_KEY, getName());
+ properties.put(Constants.HOSTNAME_KEY, "localhost");
+ LocationInfo li = new LocationInfo("file", logger.getClass().getName(), "method", "123");
LoggingEvent e = new LoggingEvent(
- logger.getClass().getName(), logger, level, msg, t);
- e.setProperty(Constants.APPLICATION_KEY, getName());
- e.setProperty(Constants.HOSTNAME_KEY, "localhost");
-
+ logger.getClass().getName(), logger, System.currentTimeMillis(), level, msg, "Thread=1", ti, "NDC value", li, properties);
return e;
}
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java Fri Sep 17 07:41:28 2010
@@ -220,7 +220,6 @@ public class LogPanel extends DockablePa
private final JSortTable table;
private final TableColorizingRenderer renderer;
private final EventContainer tableModel;
- private final ThrowableRenderPanel throwableRenderPanel;
private final JEditorPane detail;
private final JSplitPane lowerPanel;
private final DetailPaneUpdater detailPaneUpdater;
@@ -901,7 +900,6 @@ public class LogPanel extends DockablePa
/*
* Throwable popup
*/
- throwableRenderPanel = new ThrowableRenderPanel();
markerCellEditor = new MarkerCellEditor();
final JDialog detailDialog = new JDialog((JFrame) null, true);
@@ -916,39 +914,36 @@ public class LogPanel extends DockablePa
detailDialog.pack();
- throwableRenderPanel.addActionListener(
- new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ExtendedLoggingEvent event = tableModel.getRow(table.getSelectedRow());
- detailDialog.setTitle(
- table.getColumnName(table.getSelectedColumn()) + " detail...");
- if (event == null) {
- detailArea.setText("");
- } else {
+ table.addMouseListener(new MouseAdapter() {
+ public void mouseClicked(MouseEvent e)
+ {
+ TableColumn column = table.getColumnModel().getColumn(table.columnAtPoint(e.getPoint()));
+ if (!column.getHeaderValue().toString().toUpperCase().equals(ChainsawColumns.getColumnName(ChainsawColumns.INDEX_THROWABLE_COL_NAME))) {
+ return;
+ }
+
+ ExtendedLoggingEvent event = tableModel.getRow(table.getSelectedRow());
+
//throwable string representation may be a length-one empty array
String[] ti = event.getThrowableStrRep();
if (ti != null && ti.length > 0 && (!(ti.length == 1 && ti[0].equals("")))) {
- StringBuffer buf = new StringBuffer();
- buf.append(event.getMessage());
- buf.append("\n");
- for (int i = 0; i < ti.length; i++) {
- buf.append(ti[i]).append("\n ");
- }
-
- detailArea.setText(buf.toString());
- } else {
- //no exception
- detailArea.setText("");
- }
- }
+ detailDialog.setTitle(table.getColumnName(table.getSelectedColumn()) + " detail...");
+ StringBuffer buf = new StringBuffer();
+ buf.append(event.getMessage());
+ buf.append("\n");
+ for (int i = 0; i < ti.length; i++) {
+ buf.append(ti[i]).append("\n ");
+ }
- SwingHelper.invokeOnEDT(new Runnable() {
- public void run() {
- centerAndSetVisible(detailDialog);
- }
- });
+ detailArea.setText(buf.toString());
+ SwingHelper.invokeOnEDT(new Runnable() {
+ public void run() {
+ centerAndSetVisible(detailDialog);
+ }
+ });
+ }
}
- });
+ });
/*
* We listen for new Key's coming in so we can get them automatically
@@ -3130,8 +3125,8 @@ public class LogPanel extends DockablePa
}
/**
- * If a new column was added to the display and that column was the exception column,
- * set the cell editor to the throwablerenderer
+ * If a new column was added to the display and that column was the marker column,
+ * set the cell editor to the markerCellEditor
*
* @param e
*/
@@ -3141,10 +3136,6 @@ public class LogPanel extends DockablePa
while (enumeration.hasMoreElements()) {
TableColumn column = (TableColumn) enumeration.nextElement();
- if (
- (column.getModelIndex() + 1) == ChainsawColumns.INDEX_THROWABLE_COL_NAME) {
- column.setCellEditor(throwableRenderPanel);
- }
if (column.getHeaderValue().toString().toLowerCase().equals(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE)) {
column.setCellEditor(markerCellEditor);
}
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java Fri Sep 17 07:41:28 2010
@@ -116,6 +116,7 @@ public class TableColorizingRenderer ext
private boolean useRelativeTimesToPrevious;
private EventContainer eventContainer;
private LogPanelPreferenceModel logPanelPreferenceModel;
+ private SimpleAttributeSet insetAttributeSet;
/**
* Creates a new TableColorizingRenderer object.
@@ -134,6 +135,8 @@ public class TableColorizingRenderer ext
boldAttributeSet = new SimpleAttributeSet();
StyleConstants.setBold(boldAttributeSet, true);
+ insetAttributeSet = new SimpleAttributeSet();
+ StyleConstants.setLeftIndent(insetAttributeSet, 6);
//throwable col may have a tab..if so, render the tab as col zero
int pos = 0;
int align = TabStop.ALIGN_LEFT;
@@ -155,10 +158,10 @@ public class TableColorizingRenderer ext
multiLineTextPane.setEditable(false);
multiLineTextPane.setFont(levelTextPane.getFont());
- Insets leftRightInsets = new Insets(0, 5, 0, 5);
- multiLineTextPane.setMargin(leftRightInsets);
- singleLineTextPane.setMargin(leftRightInsets);
- levelTextPane.setMargin(leftRightInsets);
+
+ multiLineTextPane.setParagraphAttributes(insetAttributeSet, false);
+ singleLineTextPane.setParagraphAttributes(insetAttributeSet, false);
+ levelTextPane.setParagraphAttributes(insetAttributeSet, false);
}
public void setToolTipsVisible(boolean toolTipsVisible) {