You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2017/11/20 20:34:28 UTC
[3/4] logging-chainsaw git commit: Try to upgrade to Log4j 2
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
index 6fe2a8b..4c092e4 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
@@ -338,10 +338,8 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
getActionMap().put("ESCAPE", closeLogPanelPreferencesFrameAction);
- setDetailPaneConversionPattern(
- DefaultLayoutFactory.getDefaultPatternLayout());
- detailLayout.setConversionPattern(
- DefaultLayoutFactory.getDefaultPatternLayout());
+ setDetailPaneConversionPattern(DefaultLayoutFactory.getDefaultPatternLayout());
+ detailLayout.setConversionPattern(DefaultLayoutFactory.getDefaultPatternLayout());
undockedFrame = new JFrame(identifier);
undockedFrame.setDefaultCloseOperation(
@@ -826,15 +824,15 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
for (Iterator iter = tableModel.getAllEvents().iterator();iter.hasNext();) {
- LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper)iter.next();
- loggingEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()), colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
+ LogEventWrapper logEventWrapper = (LogEventWrapper)iter.next();
+ logEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(logEventWrapper.getLogEvent()), colorizer.getForegroundColor(logEventWrapper.getLogEvent()));
}
// no need to update searchmodel events since tablemodel and searchmodel share all events, and color rules aren't different between the two
// if that changes, un-do the color syncing in loggingeventwrapper & re-enable this code
//
// for (Iterator iter = searchModel.getAllEvents().iterator();iter.hasNext();) {
// LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper)iter.next();
-// loggingEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()), colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
+// loggingEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(loggingEventWrapper.getLogEvent()), colorizer.getForegroundColor(loggingEventWrapper.getLogEvent()));
// }
colorizedEventAndSearchMatchThumbnail.configureColors();
lowerPanel.revalidate();
@@ -982,9 +980,9 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
//select a row in the main table when a row in the search table is selected
searchTable.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
- LoggingEventWrapper loggingEventWrapper = searchModel.getRow(searchTable.getSelectedRow());
- if (loggingEventWrapper != null) {
- int id = new Integer(loggingEventWrapper.getLoggingEvent().getProperty("log4jid")).intValue();
+ LogEventWrapper logEventWrapper = searchModel.getRow(searchTable.getSelectedRow());
+ if (logEventWrapper != null) {
+ int id = new Integer(logEventWrapper.getLogEvent().getProperty("log4jid")).intValue();
//preserve the table's viewble column
setSelectedEvent(id);
}
@@ -1031,7 +1029,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
//refilter with a newValue of FALSE means refiltering is complete
//assuming notification is called on the EDT so we can in the current EDT call update the scroll & selection
tableModel.addPropertyChangeListener("refilter", new PropertyChangeListener() {
- private LoggingEventWrapper currentEvent;
+ private LogEventWrapper currentEvent;
public void propertyChange(PropertyChangeEvent evt) {
//if new value is true, filtering is about to begin
//if new value is false, filtering is complete
@@ -1789,10 +1787,10 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
if (currentPoint != null) {
int row = currentTable.rowAtPoint(currentPoint);
ChainsawCyclicBufferTableModel cyclicBufferTableModel = (ChainsawCyclicBufferTableModel) currentTable.getModel();
- LoggingEventWrapper loggingEventWrapper = cyclicBufferTableModel.getRow(row);
- if (loggingEventWrapper != null)
+ LogEventWrapper logEventWrapper = cyclicBufferTableModel.getRow(row);
+ if (logEventWrapper != null)
{
- ((TableColorizingRenderer)currentTable.getDefaultRenderer(Object.class)).setUseRelativeTimes(loggingEventWrapper.getLoggingEvent().getTimeStamp());
+ ((TableColorizingRenderer)currentTable.getDefaultRenderer(Object.class)).setUseRelativeTimes(logEventWrapper.getLogEvent().getTimeStamp());
cyclicBufferTableModel.reFilter();
}
setEnabled(true);
@@ -1954,8 +1952,8 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
//exception - build message + throwable
String[] ti = (String[])o;
if (ti.length > 0 && (!(ti.length == 1 && ti[0].equals("")))) {
- LoggingEventWrapper loggingEventWrapper = ((ChainsawCyclicBufferTableModel)(currentTable.getModel())).getRow(row);
- value = loggingEventWrapper.getLoggingEvent().getMessage().toString();
+ LogEventWrapper logEventWrapper = ((ChainsawCyclicBufferTableModel)(currentTable.getModel())).getRow(row);
+ value = logEventWrapper.getLogEvent().getMessage().toString();
for (int i=0;i<((String[])o).length;i++) {
value = value + "\n" + ((String[]) o)[i];
}
@@ -2136,7 +2134,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
}
final int selectedRow = table.getSelectedRow();
final int startingRow = table.getRowCount();
- final LoggingEventWrapper selectedEvent;
+ final LogEventWrapper selectedEvent;
if (selectedRow >= 0) {
selectedEvent = tableModel.getRow(selectedRow);
} else {
@@ -2155,7 +2153,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
//these are actual LoggingEvent instances
LoggingEvent event = (LoggingEvent)iter.next();
//create two separate loggingEventWrappers (main table and search table), as they have different info on display state
- LoggingEventWrapper loggingEventWrapper1 = new LoggingEventWrapper(event);
+ LogEventWrapper logEventWrapper1 = new LogEventWrapper(event);
//if the clearTableExpressionRule is not null, evaluate & clear the table if it matches
if (clearTableExpressionRule != null && clearTableExpressionRule.evaluate(event, null)) {
logger.info("clear table expression matched - clearing table - matching event msg - " + event.getMessage());
@@ -2163,15 +2161,15 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
}
updateOtherModels(event);
- boolean isCurrentRowAdded = tableModel.isAddRow(loggingEventWrapper1);
+ boolean isCurrentRowAdded = tableModel.isAddRow(logEventWrapper1);
if (isCurrentRowAdded) {
addedRowCount++;
}
rowAdded = rowAdded || isCurrentRowAdded;
//create a new loggingEventWrapper via copy constructor to ensure same IDs
- LoggingEventWrapper loggingEventWrapper2 = new LoggingEventWrapper(loggingEventWrapper1);
- boolean isSearchCurrentRowAdded = searchModel.isAddRow(loggingEventWrapper2);
+ LogEventWrapper logEventWrapper2 = new LogEventWrapper(logEventWrapper1);
+ boolean isSearchCurrentRowAdded = searchModel.isAddRow(logEventWrapper2);
if (isSearchCurrentRowAdded) {
searchAddedRowCount++;
}
@@ -2979,7 +2977,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
*/
private void setDetailPaneConversionPattern(String conversionPattern) {
String oldPattern = getDetailPaneConversionPattern();
- (detailLayout).setConversionPattern(conversionPattern);
+ detailLayout.setConversionPattern(conversionPattern);
firePropertyChange(
"detailPaneConversionPattern", oldPattern,
getDetailPaneConversionPattern());
@@ -2991,7 +2989,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
* @return conversionPattern layout text
*/
private String getDetailPaneConversionPattern() {
- return (detailLayout).getConversionPattern();
+ return detailLayout.getConversionPattern();
}
/**
@@ -3247,9 +3245,9 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
return longestWidth + 5;
}
- private String getToolTipTextForEvent(LoggingEventWrapper loggingEventWrapper) {
+ private String getToolTipTextForEvent(LogEventWrapper logEventWrapper) {
StringBuffer buf = new StringBuffer();
- buf.append(detailLayout.getHeader()).append(detailLayout.format(loggingEventWrapper.getLoggingEvent())).append(detailLayout.getFooter());
+ buf.append(detailLayout.getHeader()).append(detailLayout.format(logEventWrapper.getLogEvent())).append(detailLayout.getFooter());
return buf.toString();
}
@@ -3311,13 +3309,13 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
public void toggleMarker() {
int row = table.getSelectedRow();
if (row != -1) {
- LoggingEventWrapper loggingEventWrapper = tableModel.getRow(row);
- if (loggingEventWrapper != null) {
- Object marker = loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
+ LogEventWrapper logEventWrapper = tableModel.getRow(row);
+ if (logEventWrapper != null) {
+ Object marker = logEventWrapper.getLogEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
if (marker == null) {
- loggingEventWrapper.setProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE, "set");
+ logEventWrapper.setProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE, "set");
} else {
- loggingEventWrapper.removeProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
+ logEventWrapper.removeProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
}
//if marker -was- null, it no longer is (may need to add the column)
tableModel.fireRowUpdated(row, (marker == null));
@@ -3499,17 +3497,17 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
if (evt.getClickCount() == 2) {
int row = markerTable.rowAtPoint(evt.getPoint());
if (row != -1) {
- LoggingEventWrapper loggingEventWrapper = markerEventContainer.getRow(row);
- if (loggingEventWrapper != null) {
- Object marker = loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
+ LogEventWrapper logEventWrapper = markerEventContainer.getRow(row);
+ if (logEventWrapper != null) {
+ Object marker = logEventWrapper.getLogEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
if (marker == null) {
- loggingEventWrapper.setProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE, "set");
+ logEventWrapper.setProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE, "set");
} else {
- loggingEventWrapper.removeProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
+ logEventWrapper.removeProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
}
//if marker -was- null, it no longer is (may need to add the column)
markerEventContainer.fireRowUpdated(row, (marker == null));
- otherMarkerEventContainer.fireRowUpdated(otherMarkerEventContainer.getRowIndex(loggingEventWrapper), (marker == null));
+ otherMarkerEventContainer.fireRowUpdated(otherMarkerEventContainer.getRowIndex(logEventWrapper), (marker == null));
}
}
}
@@ -3547,7 +3545,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
currentRow = row;
- LoggingEventWrapper event = detailEventContainer.getRow(currentRow);
+ LogEventWrapper event = detailEventContainer.getRow(currentRow);
if (event != null) {
String toolTipText = getToolTipTextForEvent(event);
@@ -3648,14 +3646,14 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
return;
}
- LoggingEventWrapper loggingEventWrapper = null;
+ LogEventWrapper logEventWrapper = null;
if (force || (selectedRow != -1 && (lastRow != selectedRow))) {
- loggingEventWrapper = tableModel.getRow(selectedRow);
+ logEventWrapper = tableModel.getRow(selectedRow);
- if (loggingEventWrapper != null) {
+ if (logEventWrapper != null) {
final StringBuffer buf = new StringBuffer();
buf.append(detailLayout.getHeader())
- .append(detailLayout.format(loggingEventWrapper.getLoggingEvent())).append(
+ .append(detailLayout.format(logEventWrapper.getLogEvent())).append(
detailLayout.getFooter());
if (buf.length() > 0) {
try {
@@ -3675,7 +3673,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
}
}
- if (loggingEventWrapper == null && (lastRow != selectedRow)) {
+ if (logEventWrapper == null && (lastRow != selectedRow)) {
try {
final Document doc = detail.getEditorKit().createDefaultDocument();
detail.getEditorKit().read(new StringReader("<html>Nothing selected</html>"), doc, 0);
@@ -3733,14 +3731,14 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
return;
}
- LoggingEventWrapper loggingEventWrapper = throwableEventContainer.getRow(throwableTable.getSelectedRow());
+ LogEventWrapper logEventWrapper = throwableEventContainer.getRow(throwableTable.getSelectedRow());
//throwable string representation may be a length-one empty array
- String[] ti = loggingEventWrapper.getLoggingEvent().getThrowableStrRep();
+ String[] ti = logEventWrapper.getLogEvent().getThrowableStrRep();
if (ti != null && ti.length > 0 && (!(ti.length == 1 && ti[0].equals("")))) {
detailDialog.setTitle(throwableTable.getColumnName(throwableTable.getSelectedColumn()) + " detail...");
StringBuffer buf = new StringBuffer();
- buf.append(loggingEventWrapper.getLoggingEvent().getMessage());
+ buf.append(logEventWrapper.getLogEvent().getMessage());
buf.append("\n");
for (int i = 0; i < ti.length; i++) {
buf.append(ti[i]).append("\n ");
@@ -3760,7 +3758,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
JTable currentTable;
JTextField textField = new JTextField();
Set cellEditorListeners = new HashSet();
- private LoggingEventWrapper currentLoggingEventWrapper;
+ private LogEventWrapper currentLogEventWrapper;
private final Object mutex = new Object();
public Object getCellEditorValue()
@@ -3782,13 +3780,13 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
public boolean stopCellEditing()
{
if (textField.getText().trim().equals("")) {
- currentLoggingEventWrapper.removeProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
+ currentLogEventWrapper.removeProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE);
} else {
- currentLoggingEventWrapper.setProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE, textField.getText());
+ currentLogEventWrapper.setProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE, textField.getText());
}
//row should always exist in the main table if it is being edited
- tableModel.fireRowUpdated(tableModel.getRowIndex(currentLoggingEventWrapper), true);
- int index = searchModel.getRowIndex(currentLoggingEventWrapper);
+ tableModel.fireRowUpdated(tableModel.getRowIndex(currentLogEventWrapper), true);
+ int index = searchModel.getRowIndex(currentLogEventWrapper);
if (index > -1) {
searchModel.fireRowUpdated(index, true);
}
@@ -3802,7 +3800,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
for (Iterator iter = cellEditorListenersCopy.iterator();iter.hasNext();) {
((CellEditorListener)iter.next()).editingStopped(event);
}
- currentLoggingEventWrapper = null;
+ currentLogEventWrapper = null;
currentTable = null;
return true;
@@ -3819,7 +3817,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
for (Iterator iter = cellEditorListenersCopy.iterator();iter.hasNext();) {
((CellEditorListener)iter.next()).editingCanceled(event);
}
- currentLoggingEventWrapper = null;
+ currentLogEventWrapper = null;
currentTable = null;
}
@@ -3840,9 +3838,9 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
currentTable = table;
- currentLoggingEventWrapper =((EventContainer) table.getModel()).getRow(row);
- if (currentLoggingEventWrapper != null) {
- textField.setText(currentLoggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE));
+ currentLogEventWrapper =((EventContainer) table.getModel()).getRow(row);
+ if (currentLogEventWrapper != null) {
+ textField.setText(currentLogEventWrapper.getLogEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE));
textField.selectAll();
}
else {
@@ -3859,7 +3857,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
}
boolean primaryMatches(ThumbnailLoggingEventWrapper wrapper) {
- String millisDelta = wrapper.loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
+ String millisDelta = wrapper.logEventWrapper.getLogEvent().getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
if (millisDelta != null && !millisDelta.trim().equals("")) {
long millisDeltaLong = Long.parseLong(millisDelta);
//arbitrary
@@ -3879,8 +3877,8 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
int i=0;
for (Iterator iter = tableModel.getFilteredEvents().iterator();iter.hasNext();) {
- LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) iter.next();
- ThumbnailLoggingEventWrapper wrapper = new ThumbnailLoggingEventWrapper(i, loggingEventWrapper);
+ LogEventWrapper logEventWrapper = (LogEventWrapper) iter.next();
+ ThumbnailLoggingEventWrapper wrapper = new ThumbnailLoggingEventWrapper(i, logEventWrapper);
i++;
//only add if there is a color defined
if (primaryMatches(wrapper)) {
@@ -3917,7 +3915,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
int startX = 1;
int width = getWidth() - (startX * 2);
//max out at 50, min 2...
- String millisDelta = wrapper.loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
+ String millisDelta = wrapper.logEventWrapper.getLogEvent().getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
long millisDeltaLong = Long.parseLong(millisDelta);
long delta = Math.min(ChainsawConstants.MILLIS_DELTA_RENDERING_HEIGHT_MAX, Math.max(0, (long) (millisDeltaLong * ChainsawConstants.MILLIS_DELTA_RENDERING_FACTOR)));
float widthMaxMillisDeltaRenderRatio = ((float)width / ChainsawConstants.MILLIS_DELTA_RENDERING_HEIGHT_MAX);
@@ -3939,11 +3937,11 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
}
boolean primaryMatches(ThumbnailLoggingEventWrapper wrapper) {
- return !wrapper.loggingEventWrapper.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND);
+ return !wrapper.logEventWrapper.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND);
}
boolean secondaryMatches(ThumbnailLoggingEventWrapper wrapper) {
- return wrapper.loggingEventWrapper.isSearchMatch();
+ return wrapper.logEventWrapper.isSearchMatch();
}
private void configureColors() {
@@ -3952,8 +3950,8 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
int i=0;
for (Iterator iter = tableModel.getFilteredEvents().iterator();iter.hasNext();) {
- LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) iter.next();
- ThumbnailLoggingEventWrapper wrapper = new ThumbnailLoggingEventWrapper(i, loggingEventWrapper);
+ LogEventWrapper logEventWrapper = (LogEventWrapper) iter.next();
+ ThumbnailLoggingEventWrapper wrapper = new ThumbnailLoggingEventWrapper(i, logEventWrapper);
if (secondaryMatches(wrapper)) {
secondaryList.add(wrapper);
}
@@ -3985,8 +3983,8 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
//draw all non error/warning/marker events
for (Iterator iter = primaryList.iterator();iter.hasNext();) {
ThumbnailLoggingEventWrapper wrapper = (ThumbnailLoggingEventWrapper)iter.next();
- if (!wrapper.loggingEventWrapper.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)) {
- if (wrapper.loggingEventWrapper.getLoggingEvent().getLevel().toInt() < Level.WARN.toInt() && wrapper.loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE) == null) {
+ if (!wrapper.logEventWrapper.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)) {
+ if (wrapper.logEventWrapper.getLogEvent().getLevel().toInt() < Level.WARN.toInt() && wrapper.logEventWrapper.getLogEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE) == null) {
float ratio = (wrapper.rowNum / (float)rowCount);
// System.out.println("error - ratio: " + ratio + ", component height: " + componentHeight);
int verticalLocation = (int) (componentHeight * ratio);
@@ -3994,7 +3992,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
int startX = 1;
int width = getWidth() - (startX * 2);
- drawEvent(wrapper.loggingEventWrapper.getColorRuleBackground(), verticalLocation, eventHeight, g, startX, width);
+ drawEvent(wrapper.logEventWrapper.getColorRuleBackground(), verticalLocation, eventHeight, g, startX, width);
// System.out.println("painting error - rownum: " + wrapper.rowNum + ", location: " + verticalLocation + ", height: " + eventHeight + ", component height: " + componentHeight + ", row count: " + rowCount);
}
}
@@ -4003,8 +4001,8 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
//draw warnings, error, fatal & markers last (full width)
for (Iterator iter = primaryList.iterator();iter.hasNext();) {
ThumbnailLoggingEventWrapper wrapper = (ThumbnailLoggingEventWrapper)iter.next();
- if (!wrapper.loggingEventWrapper.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)) {
- if (wrapper.loggingEventWrapper.getLoggingEvent().getLevel().toInt() >= Level.WARN.toInt() || wrapper.loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE) != null) {
+ if (!wrapper.logEventWrapper.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)) {
+ if (wrapper.logEventWrapper.getLogEvent().getLevel().toInt() >= Level.WARN.toInt() || wrapper.logEventWrapper.getLogEvent().getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE) != null) {
float ratio = (wrapper.rowNum / (float)rowCount);
// System.out.println("error - ratio: " + ratio + ", component height: " + componentHeight);
int verticalLocation = (int) (componentHeight * ratio);
@@ -4017,7 +4015,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
eventHeight = Math.min(maxEventHeight, eventHeight + 3);
// eventHeight = maxEventHeight;
- drawEvent(wrapper.loggingEventWrapper.getColorRuleBackground(), (verticalLocation - eventHeight + 1), eventHeight, g, startX, width);
+ drawEvent(wrapper.logEventWrapper.getColorRuleBackground(), (verticalLocation - eventHeight + 1), eventHeight, g, startX, width);
// System.out.println("painting error - rownum: " + wrapper.rowNum + ", location: " + verticalLocation + ", height: " + eventHeight + ", component height: " + componentHeight + ", row count: " + rowCount);
}
}
@@ -4053,7 +4051,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
int yPosition = e.getPoint().y;
ThumbnailLoggingEventWrapper event = getEventWrapperAtPosition(yPosition);
if (event != null) {
- setToolTipText(getToolTipTextForEvent(event.loggingEventWrapper));
+ setToolTipText(getToolTipTextForEvent(event.logEventWrapper));
}
} else {
setToolTipText(null);
@@ -4068,7 +4066,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
ThumbnailLoggingEventWrapper event = getEventWrapperAtPosition(yPosition);
// System.out.println("rowToSelect: " + rowToSelect + ", closestRow: " + event.loggingEvent.getProperty("log4jid"));
if (event != null) {
- int id = Integer.parseInt(event.loggingEventWrapper.getLoggingEvent().getProperty("log4jid"));
+ int id = Integer.parseInt(event.logEventWrapper.getLogEvent().getProperty("log4jid"));
setSelectedEvent(id);
}
}
@@ -4091,7 +4089,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
if (e.getType() == TableModelEvent.INSERT) {
// System.out.println("insert - current warnings: " + warnings.size() + ", errors: " + errors.size() + ", first row: " + firstRow + ", last row: " + lastRow);
for (int i=firstRow;i<lastRow;i++) {
- LoggingEventWrapper event = (LoggingEventWrapper)displayedEvents.get(i);
+ LogEventWrapper event = (LogEventWrapper)displayedEvents.get(i);
ThumbnailLoggingEventWrapper wrapper = new ThumbnailLoggingEventWrapper(i, event);
if (secondaryMatches(wrapper)) {
secondaryList.add(wrapper);
@@ -4146,7 +4144,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
// System.out.println("update - after deleting old warnings in range: " + firstRow + " to " + lastRow + ", new warnings: " + warnings.size() + ", errors: " + errors.size());
//NOTE: for update, we need to do i<= lastRow
for (int i=firstRow;i<=lastRow;i++) {
- LoggingEventWrapper event = (LoggingEventWrapper)displayedEvents.get(i);
+ LogEventWrapper event = (LogEventWrapper)displayedEvents.get(i);
ThumbnailLoggingEventWrapper wrapper = new ThumbnailLoggingEventWrapper(i, event);
// System.out.println("update - adding error: " + i + ", event: " + event.getMessage());
//only add event to thumbnail if there is a color
@@ -4253,14 +4251,14 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
class ThumbnailLoggingEventWrapper {
int rowNum;
- LoggingEventWrapper loggingEventWrapper;
- public ThumbnailLoggingEventWrapper(int rowNum, LoggingEventWrapper loggingEventWrapper) {
+ LogEventWrapper logEventWrapper;
+ public ThumbnailLoggingEventWrapper(int rowNum, LogEventWrapper logEventWrapper) {
this.rowNum = rowNum;
- this.loggingEventWrapper = loggingEventWrapper;
+ this.logEventWrapper = logEventWrapper;
}
public String toString() {
- return "event - rownum: " + rowNum + ", level: " + loggingEventWrapper.getLoggingEvent().getLevel();
+ return "event - rownum: " + rowNum + ", level: " + logEventWrapper.getLogEvent().getLevel();
}
public boolean equals(Object o) {
@@ -4273,7 +4271,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
ThumbnailLoggingEventWrapper that = (ThumbnailLoggingEventWrapper) o;
- if (loggingEventWrapper != null ? !loggingEventWrapper.equals(that.loggingEventWrapper) : that.loggingEventWrapper != null) {
+ if (logEventWrapper != null ? !logEventWrapper.equals(that.logEventWrapper) : that.logEventWrapper != null) {
return false;
}
@@ -4281,7 +4279,7 @@ public class LogPanel extends DockablePanel implements EventBatchListener, Profi
}
public int hashCode() {
- return loggingEventWrapper != null ? loggingEventWrapper.hashCode() : 0;
+ return logEventWrapper != null ? logEventWrapper.hashCode() : 0;
}
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/LogUI.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
index e252fd0..11178a9 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
@@ -86,11 +86,9 @@ import javax.swing.event.EventListenerList;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
-import org.apache.log4j.Appender;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.LoggerRepositoryExImpl;
import org.apache.log4j.chainsaw.color.RuleColorizer;
import org.apache.log4j.chainsaw.dnd.FileDnDTarget;
@@ -116,8 +114,6 @@ import org.apache.log4j.plugins.PluginEvent;
import org.apache.log4j.plugins.PluginListener;
import org.apache.log4j.plugins.PluginRegistry;
import org.apache.log4j.plugins.Receiver;
-import org.apache.log4j.rewrite.PropertyRewritePolicy;
-import org.apache.log4j.rewrite.RewriteAppender;
import org.apache.log4j.rule.ExpressionRule;
import org.apache.log4j.rule.Rule;
import org.apache.log4j.spi.Decoder;
@@ -127,6 +123,12 @@ import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.RepositorySelector;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.log4j.xml.XMLDecoder;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.appender.rewrite.PropertiesRewritePolicy;
+import org.apache.logging.log4j.core.appender.rewrite.RewriteAppender;
+import org.apache.logging.log4j.core.appender.rewrite.RewritePolicy;
+import org.apache.logging.log4j.core.config.AppenderRef;
+import org.apache.logging.log4j.core.config.Property;
/**
@@ -367,22 +369,31 @@ public class LogUI extends JFrame implements ChainsawViewer, SettingsListener {
logUI.ensureChainsawAppenderHandlerAdded();
logger = LogManager.getLogger(LogUI.class);
- //set hostname, application and group properties which will cause Chainsaw and other apache-generated
- //logging events to route (by default) to a tab named 'chainsaw-log'
- PropertyRewritePolicy policy = new PropertyRewritePolicy();
- policy.setProperties("hostname=chainsaw,application=log,group=chainsaw");
-
- RewriteAppender rewriteAppender = new RewriteAppender();
- rewriteAppender.setRewritePolicy(policy);
-
- Enumeration appenders = Logger.getLogger("org.apache").getAllAppenders();
+ Enumeration<Appender> appenders = Logger.getLogger("org.apache").getAllAppenders();
if (!appenders.hasMoreElements()) {
appenders = Logger.getRootLogger().getAllAppenders();
}
+
+ ArrayList<AppenderRef> appenderRefs = new ArrayList<>();
while (appenders.hasMoreElements()) {
- Appender nextAppender = (Appender)appenders.nextElement();
- rewriteAppender.addAppender(nextAppender);
+ appenderRefs.add(AppenderRef.createAppenderRef(appenders.nextElement().getName(), Level.ALL, null));
}
+
+ //set hostname, application and group properties which will cause Chainsaw and other apache-generated
+ //logging events to route (by default) to a tab named 'chainsaw-log'
+ RewritePolicy policy = PropertiesRewritePolicy.createPolicy(configuration, new Property[] {
+ Property.createProperty("hostname", "chainsaw"),
+ Property.createProperty("application", "log"),
+ Property.createProperty("group", "chainsaw")
+ });
+ RewriteAppender rewriteAppender = RewriteAppender.createAppender(
+ "rewrite",
+ true,
+ appenderRefs,
+ configuration,
+ policy,
+ null);
+
Logger.getLogger("org.apache").removeAllAppenders();
Logger.getLogger("org.apache").addAppender(rewriteAppender);
Logger.getLogger("org.apache").setAdditivity(false);
@@ -2103,8 +2114,8 @@ public class LogUI extends JFrame implements ChainsawViewer, SettingsListener {
Iterator iter2 = panel.getMatchingEvents(rule).iterator();
while (iter2.hasNext()) {
- LoggingEventWrapper e = (LoggingEventWrapper) iter2.next();
- list.add(e.getLoggingEvent());
+ LogEventWrapper e = (LogEventWrapper) iter2.next();
+ list.add(e.getLogEvent());
}
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java b/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
deleted file mode 100644
index 63363a3..0000000
--- a/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.log4j.chainsaw;
-
-import java.awt.Color;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.rule.Rule;
-import org.apache.log4j.spi.LoggingEvent;
-
-/**
- * Wrap access to a LoggingEvent. All property updates need to go through this object and not through the wrapped logging event,
- * since the properties are shared by two views of the same backing LoggingEvent, and loggingEvent itself creates a copy of passed-in properties..
- *
- * Property reads can be made on the actual LoggingEvent.
- */
-public class LoggingEventWrapper {
- private final LoggingEvent loggingEvent;
- private static final int DEFAULT_HEIGHT = -1;
-
- private Color colorRuleBackground = ChainsawConstants.COLOR_DEFAULT_BACKGROUND;
- private Color colorRuleForeground = ChainsawConstants.COLOR_DEFAULT_FOREGROUND;
- private int markerHeight = DEFAULT_HEIGHT;
- private int msgHeight = DEFAULT_HEIGHT;
-
- //set to the log4jid value via setId - assumed to never change
- private int id;
-
- private boolean searchMatch = false;
- //a Map of event fields to Sets of string matches (can be used to render matches differently)
- Map eventMatches = new HashMap();
- private LoggingEventWrapper syncWrapper;
- private boolean displayed;
-
- public LoggingEventWrapper(LoggingEvent loggingEvent) {
- this.loggingEvent = loggingEvent;
- }
-
- public LoggingEventWrapper(LoggingEventWrapper loggingEventWrapper) {
- this.loggingEvent = loggingEventWrapper.getLoggingEvent();
- this.id = loggingEventWrapper.id;
- this.syncWrapper = loggingEventWrapper;
- loggingEventWrapper.syncWrapper = this;
- }
-
- public LoggingEvent getLoggingEvent() {
- return loggingEvent;
- }
-
- public void setProperty(String propName, String propValue) {
- loggingEvent.setProperty(propName, propValue);
- if (id == 0 && propName.equals(Constants.LOG4J_ID_KEY)) {
- id = Integer.parseInt(propValue);
- }
- if (syncWrapper != null && !propName.equals(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE)) {
- syncWrapper.getLoggingEvent().setProperty(propName, propValue);
- }
- }
-
- public Object removeProperty(String propName) {
- Object result = loggingEvent.removeProperty(propName);
- if (syncWrapper != null && !propName.equals(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE)) {
- syncWrapper.getLoggingEvent().removeProperty(propName);
- }
- return result;
- }
-
- public Set getPropertyKeySet() {
- return loggingEvent.getPropertyKeySet();
- }
-
- public void updateColorRuleColors(Color backgroundColor, Color foregroundColor) {
- if (backgroundColor != null && foregroundColor != null) {
- this.colorRuleBackground = backgroundColor;
- this.colorRuleForeground = foregroundColor;
- if (syncWrapper != null) {
- syncWrapper.colorRuleBackground = this.colorRuleBackground;
- syncWrapper.colorRuleForeground = this.colorRuleForeground;
- }
- } else {
- this.colorRuleBackground = ChainsawConstants.COLOR_DEFAULT_BACKGROUND;
- this.colorRuleForeground = ChainsawConstants.COLOR_DEFAULT_FOREGROUND;
- if (syncWrapper != null) {
- syncWrapper.colorRuleBackground = this.colorRuleBackground;
- syncWrapper.colorRuleForeground = this.colorRuleForeground;
- }
- }
- }
-
- public void evaluateSearchRule(Rule searchRule) {
- eventMatches.clear();
- searchMatch = searchRule != null && searchRule.evaluate(loggingEvent, eventMatches);
- }
-
- public Map getSearchMatches() {
- return eventMatches;
- }
-
- public Color getForeground() {
- return colorRuleForeground;
- }
-
- public Color getBackground() {
- return colorRuleBackground;
- }
-
- public Color getColorRuleBackground() {
- return colorRuleBackground;
- }
-
- public Color getColorRuleForeground() {
- return colorRuleForeground;
- }
-
- public boolean isSearchMatch() {
- return searchMatch;
- }
-
- public void setMarkerHeight(int markerHeight) {
- this.markerHeight = markerHeight;
- }
-
- public int getMarkerHeight() {
- return markerHeight;
- }
-
- public void setMsgHeight(int msgHeight) {
- this.msgHeight = msgHeight;
- }
-
- public int getMsgHeight() {
- return msgHeight;
- }
-
- public void setDisplayed(boolean b) {
- markerHeight = DEFAULT_HEIGHT;
- msgHeight = DEFAULT_HEIGHT;
- displayed = b;
- }
-
- public void setPreviousDisplayedEventTimestamp(long previousDisplayedEventTimeStamp) {
- setProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE, String.valueOf(loggingEvent.getTimeStamp() - previousDisplayedEventTimeStamp));
- }
-
- public boolean isDisplayed() {
- return displayed;
- }
-
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- LoggingEventWrapper that = (LoggingEventWrapper) o;
-
- if (id != that.id) {
- return false;
- }
-
- return true;
- }
-
- public int hashCode() {
- return id;
- }
-
- public String toString() {
- return "LoggingEventWrapper - id: " + id + " background: " + getBackground() + ", foreground: " + getForeground() + ", msg: " + loggingEvent.getMessage();
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
index 5d83d02..91451b8 100644
--- a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
@@ -173,8 +173,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
final JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int col) {
EventContainer container = (EventContainer) table.getModel();
- LoggingEventWrapper loggingEventWrapper = container.getRow(row);
- value = formatField(value, loggingEventWrapper);
+ LogEventWrapper logEventWrapper = container.getRow(row);
+ value = formatField(value, logEventWrapper);
TableColumn tableColumn = table.getColumnModel().getColumn(col);
int width = tableColumn.getWidth();
JLabel label = (JLabel)super.getTableCellRendererComponent(table, value,
@@ -183,16 +183,16 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
int colIndex = tableColumn.getModelIndex() + 1;
//no event, use default renderer
- if (loggingEventWrapper == null) {
+ if (logEventWrapper == null) {
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
}
long delta = 0;
if (row > 0) {
- LoggingEventWrapper previous = eventContainer.getRow(row - 1);
- delta = Math.min(ChainsawConstants.MILLIS_DELTA_RENDERING_HEIGHT_MAX, Math.max(0, (long) ((loggingEventWrapper.getLoggingEvent().getTimeStamp() - previous.getLoggingEvent().getTimeStamp()) * ChainsawConstants.MILLIS_DELTA_RENDERING_FACTOR)));
+ LogEventWrapper previous = eventContainer.getRow(row - 1);
+ delta = Math.min(ChainsawConstants.MILLIS_DELTA_RENDERING_HEIGHT_MAX, Math.max(0, (long) ((logEventWrapper.getLogEvent().getTimeStamp() - previous.getLogEvent().getTimeStamp()) * ChainsawConstants.MILLIS_DELTA_RENDERING_FACTOR)));
}
- Map matches = loggingEventWrapper.getSearchMatches();
+ Map matches = logEventWrapper.getSearchMatches();
JComponent component;
switch (colIndex) {
@@ -325,8 +325,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
textPane.setBorder(getMiddleBorder(isSelected, 0));
}
}
- int currentMarkerHeight = loggingEventWrapper.getMarkerHeight();
- int currentMsgHeight = loggingEventWrapper.getMsgHeight();
+ int currentMarkerHeight = logEventWrapper.getMarkerHeight();
+ int currentMsgHeight = logEventWrapper.getMsgHeight();
int newRowHeight = ChainsawConstants.DEFAULT_ROW_HEIGHT;
boolean setHeight = false;
@@ -351,15 +351,15 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
}
if (colIndex == ChainsawColumns.INDEX_LOG4J_MARKER_COL_NAME) {
- loggingEventWrapper.setMarkerHeight(newRowHeight);
- if (newRowHeight != currentMarkerHeight && newRowHeight >= loggingEventWrapper.getMsgHeight()) {
+ logEventWrapper.setMarkerHeight(newRowHeight);
+ if (newRowHeight != currentMarkerHeight && newRowHeight >= logEventWrapper.getMsgHeight()) {
setHeight = true;
}
}
if (colIndex == ChainsawColumns.INDEX_MESSAGE_COL_NAME) {
- loggingEventWrapper.setMsgHeight(newRowHeight);
- if (newRowHeight != currentMsgHeight && newRowHeight >= loggingEventWrapper.getMarkerHeight()) {
+ logEventWrapper.setMsgHeight(newRowHeight);
+ if (newRowHeight != currentMsgHeight && newRowHeight >= logEventWrapper.getMarkerHeight()) {
setHeight = true;
}
}
@@ -394,7 +394,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
//remaining entries are properties
default:
- Set propertySet = loggingEventWrapper.getPropertyKeySet();
+ Set propertySet = logEventWrapper.getPropertyKeySet();
String headerName = tableColumn.getHeaderValue().toString().toLowerCase();
String thisProp = null;
//find the property in the property set...case-sensitive
@@ -408,7 +408,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
if (thisProp != null) {
String propKey = LoggingEventFieldResolver.PROP_FIELD + thisProp.toUpperCase();
Set propKeyMatches = (Set)matches.get(propKey);
- singleLineTextPane.setText(loggingEventWrapper.getLoggingEvent().getProperty(thisProp));
+ singleLineTextPane.setText(logEventWrapper.getLogEvent().getProperty(thisProp));
setHighlightAttributesInternal(propKeyMatches, (StyledDocument) singleLineTextPane.getDocument());
} else {
singleLineTextPane.setText("");
@@ -422,16 +422,16 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
Color foreground;
Rule loggerRule = colorizer.getLoggerRule();
//use logger colors in table instead of event colors if event passes logger rule
- if (loggerRule != null && loggerRule.evaluate(loggingEventWrapper.getLoggingEvent(), null)) {
+ if (loggerRule != null && loggerRule.evaluate(logEventWrapper.getLogEvent(), null)) {
background = applicationPreferenceModel.getSearchBackgroundColor();
foreground = applicationPreferenceModel.getSearchForegroundColor();
} else {
if (colorizeSearch && !applicationPreferenceModel.isBypassSearchColors()) {
- background = loggingEventWrapper.isSearchMatch()?applicationPreferenceModel.getSearchBackgroundColor():loggingEventWrapper.getBackground();
- foreground = loggingEventWrapper.isSearchMatch()?applicationPreferenceModel.getSearchForegroundColor():loggingEventWrapper.getForeground();
+ background = logEventWrapper.isSearchMatch()?applicationPreferenceModel.getSearchBackgroundColor(): logEventWrapper.getBackground();
+ foreground = logEventWrapper.isSearchMatch()?applicationPreferenceModel.getSearchForegroundColor(): logEventWrapper.getForeground();
} else {
- background = loggingEventWrapper.getBackground();
- foreground = loggingEventWrapper.getForeground();
+ background = logEventWrapper.getBackground();
+ foreground = logEventWrapper.getForeground();
}
}
@@ -564,7 +564,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
*
* @return formatted object
*/
- private Object formatField(Object field, LoggingEventWrapper loggingEventWrapper) {
+ private Object formatField(Object field, LogEventWrapper logEventWrapper) {
if (!(field instanceof Date)) {
return (field == null ? "" : field);
}
@@ -574,7 +574,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
return "" + (((Date)field).getTime() - relativeTimestampBase);
}
if (useRelativeTimesToPrevious) {
- return loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
+ return logEventWrapper.getLogEvent().getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
}
return dateFormatInUse.format((Date) field);
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/dnd/FileDnDTarget.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/dnd/FileDnDTarget.java b/src/main/java/org/apache/log4j/chainsaw/dnd/FileDnDTarget.java
index 647a92c..f9236bf 100644
--- a/src/main/java/org/apache/log4j/chainsaw/dnd/FileDnDTarget.java
+++ b/src/main/java/org/apache/log4j/chainsaw/dnd/FileDnDTarget.java
@@ -17,7 +17,8 @@
package org.apache.log4j.chainsaw.dnd;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import java.awt.datatransfer.DataFlavor;
import java.awt.Color;
import java.awt.datatransfer.Transferable;
@@ -42,7 +43,7 @@ import javax.swing.JComponent;
* the standard PropertyChangesListener semantics to indicate that a list of
* files have been dropped onto the target.
*
- * If you wish to know whan the files have been dropped, subscribe to the "fileList" property change.
+ * If you wish to know what the files have been dropped, subscribe to the "fileList" property change.
*
* @author psmith
*
@@ -51,7 +52,7 @@ public class FileDnDTarget implements DropTargetListener{
/**
* Logger for this class
*/
- private static final Logger LOG = Logger.getLogger(FileDnDTarget.class);
+ private static final Logger LOG = LogManager.getLogger(FileDnDTarget.class);
protected int acceptableActions = DnDConstants.ACTION_COPY;
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/filter/FilterModel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/filter/FilterModel.java b/src/main/java/org/apache/log4j/chainsaw/filter/FilterModel.java
index 1b1670d..98010a4 100644
--- a/src/main/java/org/apache/log4j/chainsaw/filter/FilterModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/filter/FilterModel.java
@@ -17,8 +17,8 @@
package org.apache.log4j.chainsaw.filter;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.LocationInfo;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.core.LogEvent;
/**
* This class is used as a Model for Filtering, and retains the unique entries that
@@ -31,16 +31,16 @@ public class FilterModel {
private EventTypeEntryContainer eventContainer =
new EventTypeEntryContainer();
- public void processNewLoggingEvent(LoggingEvent event) {
+ public void processNewLoggingEvent(LogEvent event) {
eventContainer.addLevel(event.getLevel());
eventContainer.addLogger(event.getLoggerName());
eventContainer.addThread(event.getThreadName());
- eventContainer.addNDC(event.getNDC());
- eventContainer.addProperties(event.getProperties());
+ eventContainer.addNDC(StringUtils.join(event.getContextStack().asList(), ' '));
+ eventContainer.addProperties(event.getContextMap());
- if (event.locationInformationExists()) {
- LocationInfo info = event.getLocationInformation();
+ StackTraceElement info = event.getSource();
+ if (info != null) {
eventContainer.addClass(info.getClassName());
eventContainer.addMethod(info.getMethodName());
eventContainer.addFileName(info.getFileName());
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/help/HelpLocator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/help/HelpLocator.java b/src/main/java/org/apache/log4j/chainsaw/help/HelpLocator.java
index 1ac3533..cce002e 100644
--- a/src/main/java/org/apache/log4j/chainsaw/help/HelpLocator.java
+++ b/src/main/java/org/apache/log4j/chainsaw/help/HelpLocator.java
@@ -25,8 +25,8 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.chainsaw.messages.MessageCenter;
/**
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/help/HelpManager.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/help/HelpManager.java b/src/main/java/org/apache/log4j/chainsaw/help/HelpManager.java
index e5eec55..82418df 100644
--- a/src/main/java/org/apache/log4j/chainsaw/help/HelpManager.java
+++ b/src/main/java/org/apache/log4j/chainsaw/help/HelpManager.java
@@ -23,14 +23,14 @@ import java.beans.PropertyChangeSupport;
import java.io.File;
import java.net.URL;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.chainsaw.ChainsawConstants;
/**
* Singleton help manager where objects can register to display
- * Help for something, an independant viewer can register to
+ * Help for something, an independent viewer can register to
* be notified when the requested Help URL changes and can display
* it appropriately. This class effectively decouples the help requester
* from the help implementation (if any!)
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/icons/LineIconFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/icons/LineIconFactory.java b/src/main/java/org/apache/log4j/chainsaw/icons/LineIconFactory.java
index a7891c4..0524ecb 100644
--- a/src/main/java/org/apache/log4j/chainsaw/icons/LineIconFactory.java
+++ b/src/main/java/org/apache/log4j/chainsaw/icons/LineIconFactory.java
@@ -29,8 +29,8 @@ import java.awt.image.BufferedImage;
import javax.swing.Icon;
import javax.swing.ImageIcon;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/layout/EventDetailLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/layout/EventDetailLayout.java b/src/main/java/org/apache/log4j/chainsaw/layout/EventDetailLayout.java
index 8f463df..a128e76 100644
--- a/src/main/java/org/apache/log4j/chainsaw/layout/EventDetailLayout.java
+++ b/src/main/java/org/apache/log4j/chainsaw/layout/EventDetailLayout.java
@@ -17,15 +17,14 @@
package org.apache.log4j.chainsaw.layout;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Set;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.message.SimpleMessage;
+import org.apache.logging.log4j.util.TriConsumer;
-import org.apache.log4j.EnhancedPatternLayout;
-import org.apache.log4j.Layout;
-import org.apache.log4j.Logger;
-import org.apache.log4j.spi.LocationInfo;
-import org.apache.log4j.spi.LoggingEvent;
+import java.util.HashMap;
+import java.util.Map;
/**
@@ -34,99 +33,33 @@ import org.apache.log4j.spi.LoggingEvent;
* when mouse-over on a particular log event row.
*
* It relies an an internal PatternLayout to accomplish this, but ensures HTML characters
- * from any LoggingEvent are escaped first.
+ * from any LogEvent are escaped first.
*
* @author Paul Smith <psmith@apache.org>
*/
-public class EventDetailLayout extends Layout {
- private EnhancedPatternLayout patternLayout = new EnhancedPatternLayout();
+public class EventDetailLayout {
+ private PatternLayout patternLayout;
- public EventDetailLayout() {
+ public synchronized void setConversionPattern(String conversionPattern) {
+ patternLayout = PatternLayout.newBuilder().withPattern(conversionPattern).build();
}
- public void setConversionPattern(String conversionPattern) {
- patternLayout.setConversionPattern(conversionPattern);
- patternLayout.activateOptions();
- }
-
- public String getConversionPattern() {
+ public synchronized String getConversionPattern() {
return patternLayout.getConversionPattern();
}
- /* (non-Javadoc)
- * @see org.apache.log4j.Layout#getFooter()
- */
public String getFooter() {
return "";
}
- /* (non-Javadoc)
- * @see org.apache.log4j.Layout#getHeader()
- */
public String getHeader() {
return "";
}
- // /* (non-Javadoc)
- // * @see org.apache.log4j.Layout#format(java.io.Writer, org.apache.log4j.spi.LoggingEvent)
- // */
- // public void format(Writer output, LoggingEvent event)
- // throws IOException {
- // boolean pastFirst = false;
- // output.write("<html><body><table cellspacing=0 cellpadding=0>");
- //
- // List columnNames = ChainsawColumns.getColumnsNames();
- //
- // Vector v = ChainsawAppenderHandler.convert(event);
- //
- // /**
- // * we need to add the ID property from the event
- // */
- // v.add(event.getProperty(ChainsawConstants.LOG4J_ID_KEY));
- //
- // // ListIterator iter = displayFilter.getDetailColumns().listIterator();
- // Iterator iter = columnNames.iterator();
- // String column = null;
- // int index = -1;
- //
- // while (iter.hasNext()) {
- // column = (String) iter.next();
- // index = columnNames.indexOf(column);
- //
- // if (index > -1) {
- // if (pastFirst) {
- // output.write("</td></tr>");
- // }
- //
- // output.write("<tr><td valign=\"top\"><b>");
- // output.write(column);
- // output.write(": </b></td><td>");
- //
- //
- // if (index<v.size()) {
- // Object o = v.get(index);
- //
- // if (o != null) {
- // output.write(escape(o.toString()));
- // } else {
- // output.write("{null}");
- // }
- //
- // }else {
- //// output.write("Invalid column " + column + " (index=" + index + ")");
- // }
- //
- // pastFirst = true;
- // }
- // }
- //
- // output.write("</table></body></html>");
- // }
-
/**
* Escape <, > & and " as their entities. It is very
* dumb about & handling.
- * @param aStr the String to escape.
+ * @param string the String to escape.
* @return the escaped String
*/
private static String escape(String string) {
@@ -134,7 +67,7 @@ public class EventDetailLayout extends Layout {
return "";
}
- final StringBuffer buf = new StringBuffer();
+ final StringBuilder buf = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);
@@ -142,28 +75,22 @@ public class EventDetailLayout extends Layout {
switch (c) {
case '<':
buf.append("<");
-
break;
case '>':
buf.append(">");
-
break;
case '\"':
buf.append(""");
-
break;
case '&':
buf.append("&");
-
break;
default:
buf.append(c);
-
- break;
}
}
@@ -171,109 +98,65 @@ public class EventDetailLayout extends Layout {
}
/**
- * Takes a source event and copies it into a new LoggingEvent object
+ * Takes a source event and copies it into a new LogEvent object
* and ensuring all the internal elements of the event are HTML safe
* @param event
- * @return new LoggingEvent
+ * @return new LogEvent
*/
- private static LoggingEvent copyForHTML(LoggingEvent event) {
- Logger logger = Logger.getLogger(event.getLoggerName());
- String threadName = event.getThreadName();
- Object msg = escape(event.getMessage().toString());
- String ndc = event.getNDC();
-// Hashtable mdc = formatMDC(event);
- LocationInfo li = null;
- if (event.locationInformationExists()) {
+ private static LogEvent copyForHTML(LogEvent event) {
+ String msg = escape(event.getMessage().getFormattedMessage());
+ StackTraceElement li = null;
+ if (event.getSource() != null) {
li = formatLocationInfo(event);
}
- Hashtable properties = formatProperties(event);
- LoggingEvent copy = new LoggingEvent(null,
- logger, event.getTimeStamp(),
- event.getLevel(),
- msg,
- threadName,
- event.getThrowableInformation(),
- ndc,
- li,
- properties);
-
- return copy;
+ Map<String, String> properties = formatProperties(event);
+
+ return Log4jLogEvent.newBuilder()
+ .setLoggerFqcn(event.getLoggerFqcn())
+ .setLoggerName(event.getLoggerName())
+ .setTimeMillis(event.getTimeMillis())
+ .setNanoTime(event.getNanoTime())
+ .setLevel(event.getLevel())
+ .setMessage(new SimpleMessage(msg))
+ .setThreadName(event.getThreadName())
+ .setThreadId(event.getThreadId())
+ .setThreadPriority(event.getThreadPriority())
+ .setThrownProxy(event.getThrownProxy())
+ .setContextStack(event.getContextStack())
+ .setContextMap(properties)
+ .setSource(li)
+ .setMarker(event.getMarker())
+ .build();
}
-// /**
-// * @param event
-// * @return
-// */
-// private static Hashtable formatMDC(LoggingEvent event) {
-// Set keySet = event.getMDCKeySet();
-// Hashtable hashTable = new Hashtable();
-//
-// for (Iterator iter = keySet.iterator(); iter.hasNext();) {
-// Object key = (Object) iter.next();
-// Object value = event.getMDC(key.toString());
-// hashTable.put(escape(key.toString()), escape(value.toString()));
-// }
-//
-// return hashTable;
-// }
-
- /**
- * @param event
- * @return
- */
- private static LocationInfo formatLocationInfo(LoggingEvent event) {
- LocationInfo info = event.getLocationInformation();
- LocationInfo newInfo =
- new LocationInfo(
- escape(info.getFileName()), escape(info.getClassName()),
- escape(info.getMethodName()), escape(info.getLineNumber()));
-
- return newInfo;
+ private static StackTraceElement formatLocationInfo(LogEvent event) {
+ StackTraceElement info = event.getSource();
+ return new StackTraceElement(
+ escape(info.getFileName()), escape(info.getClassName()),
+ escape(info.getMethodName()), info.getLineNumber());
}
- /**
- * @param event
- * @return
- */
- private static Hashtable formatProperties(LoggingEvent event) {
- Set keySet = event.getPropertyKeySet();
- Hashtable hashTable = new Hashtable();
-
- for (Iterator iter = keySet.iterator(); iter.hasNext();) {
- Object key = iter.next();
- Object value = event.getProperty(key.toString());
- hashTable.put(escape(key.toString()), escape(value.toString()));
- }
-
+ private static Map<String, String> formatProperties(LogEvent event) {
+ Map<String, String> hashTable = new HashMap<>();
+ event.getContextData().forEach(new TriConsumer<String, String, Map<String, String>>() {
+ @Override
+ public void accept(String key, String value, Map<String, String> state) {
+ state.put(escape(key), escape(value));
+ }
+ }, hashTable);
return hashTable;
}
- /* (non-Javadoc)
- * @see org.apache.log4j.Layout#ignoresThrowable()
- */
- public boolean ignoresThrowable() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.apache.log4j.spi.OptionHandler#activateOptions()
- */
- public void activateOptions() {
- }
-
- /* (non-Javadoc)
- * @see org.apache.log4j.Layout#format(java.io.Writer, org.apache.log4j.spi.LoggingEvent)
- */
- public String format(final LoggingEvent event) {
- LoggingEvent newEvent = copyForHTML(event);
- /**
+ public String format(final LogEvent event) {
+ LogEvent newEvent = copyForHTML(event);
+ /*
* Layouts are not thread-safe, but are normally
* protected by the fact that their Appender is thread-safe.
*
* But here in Chainsaw there is no such guarantees.
*/
- synchronized(patternLayout) {
- return patternLayout.format(newEvent);
+ synchronized (this) {
+ return patternLayout.toSerializable(newEvent);
}
}
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/layout/LayoutEditorPane.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/layout/LayoutEditorPane.java b/src/main/java/org/apache/log4j/chainsaw/layout/LayoutEditorPane.java
index dd27fb9..b8f7688 100644
--- a/src/main/java/org/apache/log4j/chainsaw/layout/LayoutEditorPane.java
+++ b/src/main/java/org/apache/log4j/chainsaw/layout/LayoutEditorPane.java
@@ -21,8 +21,10 @@ import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.Arrays;
import java.util.Date;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.Action;
@@ -42,18 +44,20 @@ import javax.swing.event.CaretListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Level;
import org.apache.log4j.chainsaw.ChainsawConstants;
import org.apache.log4j.chainsaw.JTextComponentFormatter;
import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-import org.apache.log4j.spi.LocationInfo;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ThrowableInformation;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.impl.ThrowableProxy;
+import org.apache.logging.log4j.message.SimpleMessage;
+import org.apache.logging.log4j.spi.MutableThreadContextStack;
/**
* An editor Pane that allows a user to Edit a Pattern Layout and preview the output it would
- * generate with an example LoggingEvent
+ * generate with an example LogEvent
*
* @author Paul Smith <psmith@apache.org>
*
@@ -78,7 +82,7 @@ public final class LayoutEditorPane extends JPanel {
new JScrollPane(
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
- private LoggingEvent event;
+ private LogEvent event;
private EventDetailLayout layout = new EventDetailLayout();
/**
@@ -94,9 +98,6 @@ public final class LayoutEditorPane extends JPanel {
setupListeners();
}
- /**
- * @return
- */
private Action createCutAction() {
final Action action =
new AbstractAction("Cut", ChainsawIcons.ICON_CUT) {
@@ -110,9 +111,6 @@ public final class LayoutEditorPane extends JPanel {
return action;
}
- /**
- * @return
- */
private Action createCopyAction() {
final Action action =
new AbstractAction("Copy", ChainsawIcons.ICON_COPY) {
@@ -126,9 +124,6 @@ public final class LayoutEditorPane extends JPanel {
return action;
}
- /**
- *
- */
private void setupListeners() {
patternEditor.getDocument().addDocumentListener(
new DocumentListener() {
@@ -172,28 +167,29 @@ public final class LayoutEditorPane extends JPanel {
*
*/
private void createEvent() {
- Hashtable hashTable = new Hashtable();
- hashTable.put("key1", "val1");
- hashTable.put("key2", "val2");
- hashTable.put("key3", "val3");
-
- LocationInfo li =
- new LocationInfo(
- "myfile.java", "com.mycompany.util.MyClass", "myMethod", "321");
-
- ThrowableInformation tsr = new ThrowableInformation(new Exception());
-
- event = new LoggingEvent("org.apache.log4j.Logger",
- Logger.getLogger("com.mycompany.mylogger"),
- new Date().getTime(),
- org.apache.log4j.Level.DEBUG,
- "The quick brown fox jumped over the lazy dog",
- "Thread-1",
- tsr,
- "NDC string",
- li,
- hashTable);
-
+ Map<String, String> contextMap = new HashMap<>(3);
+ contextMap.put("key1", "val1");
+ contextMap.put("key2", "val2");
+ contextMap.put("key3", "val3");
+
+ StackTraceElement li =
+ new StackTraceElement(
+ "myfile.java", "com.mycompany.util.MyClass", "myMethod", 321);
+
+ ThrowableProxy tsr = new ThrowableProxy(new Exception());
+
+ event = Log4jLogEvent.newBuilder()
+ .setLoggerFqcn("org.apache.log4j.Logger")
+ .setLoggerName("com.mycompany.mylogger")
+ .setTimeMillis(new Date().getTime())
+ .setLevel(Level.DEBUG)
+ .setMessage(new SimpleMessage("The quick brown fox jumped over the lazy dog"))
+ .setThreadName("Thread-1")
+ .setThrownProxy(tsr)
+ .setContextStack(new MutableThreadContextStack(Arrays.asList("NDC", "string")))
+ .setContextMap(contextMap)
+ .setSource(li)
+ .build();
}
/**
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/messages/MessageCenter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/messages/MessageCenter.java b/src/main/java/org/apache/log4j/chainsaw/messages/MessageCenter.java
index bf858b5..4e7a052 100644
--- a/src/main/java/org/apache/log4j/chainsaw/messages/MessageCenter.java
+++ b/src/main/java/org/apache/log4j/chainsaw/messages/MessageCenter.java
@@ -40,16 +40,17 @@ import javax.swing.ListModel;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
-import org.apache.log4j.Layout;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.TTCCLayout;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.chainsaw.ChainsawConstants;
-import org.apache.log4j.chainsaw.LoggingEventWrapper;
+import org.apache.log4j.chainsaw.LogEventWrapper;
import org.apache.log4j.chainsaw.PopupListener;
import org.apache.log4j.chainsaw.SmallButton;
import org.apache.log4j.chainsaw.icons.ChainsawIcons;
import org.apache.log4j.varia.ListModelAppender;
+import org.apache.logging.log4j.core.layout.PatternLayout;
/**
@@ -73,8 +74,8 @@ import org.apache.log4j.varia.ListModelAppender;
*/
public class MessageCenter {
private static final MessageCenter instance = new MessageCenter();
- private final Logger logger = Logger.getLogger(MessageCenter.class);
- private Layout layout = new TTCCLayout();
+ private final Logger logger = LogManager.getLogger(MessageCenter.class);
+ private Layout layout = PatternLayout.newBuilder().withPattern(PatternLayout.TTCC_CONVERSION_PATTERN).build();
private final JList messageList = new JList();
private final ListModelAppender appender = new ListModelAppender();
private ListCellRenderer listCellRenderer =
@@ -241,7 +242,7 @@ public class MessageCenter {
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
- value = layout.format(((LoggingEventWrapper) value).getLoggingEvent());
+ value = layout.format(((LogEventWrapper) value).getLogEvent());
Component c =
super.getListCellRendererComponent(
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/osx/OSXIntegration.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/osx/OSXIntegration.java b/src/main/java/org/apache/log4j/chainsaw/osx/OSXIntegration.java
index dec20b0..110c39f 100644
--- a/src/main/java/org/apache/log4j/chainsaw/osx/OSXIntegration.java
+++ b/src/main/java/org/apache/log4j/chainsaw/osx/OSXIntegration.java
@@ -21,7 +21,8 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.chainsaw.LogUI;
@@ -38,7 +39,7 @@ import org.apache.log4j.chainsaw.LogUI;
*/
public class OSXIntegration {
public static final boolean IS_OSX = System.getProperty("os.name").startsWith("Mac OS X");
- private static final Logger LOG = Logger.getLogger(OSXIntegration.class);
+ private static final Logger LOG = LogManager.getLogger(OSXIntegration.class);
private static Object applicationInstance;
public static final void init(final LogUI logui) {
LOG.info("OSXIntegration.init() called");
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
index baf45a1..8425943 100644
--- a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
@@ -58,9 +58,9 @@ import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.TreePath;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.chainsaw.PopupListener;
import org.apache.log4j.chainsaw.SmallButton;
import org.apache.log4j.chainsaw.prefs.SettingsManager;
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java b/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
index 89574d2..1d8b69e 100644
--- a/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
+++ b/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
@@ -48,9 +48,8 @@ import javax.swing.SwingUtilities;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
-import org.apache.log4j.BasicConfigurator;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.chainsaw.ChainsawConstants;
import org.apache.log4j.chainsaw.LogFilePatternLayoutBuilder;
import org.apache.log4j.chainsaw.SmallButton;
@@ -59,7 +58,6 @@ import org.apache.log4j.chainsaw.icons.ChainsawIcons;
import org.apache.log4j.chainsaw.plugins.GUIPluginSkeleton;
import org.apache.log4j.chainsaw.prefs.SettingsManager;
import org.apache.log4j.chainsaw.vfs.VFSLogFilePatternReceiver;
-import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.net.MulticastReceiver;
import org.apache.log4j.net.SocketHubReceiver;
import org.apache.log4j.net.SocketReceiver;
@@ -74,6 +72,7 @@ import org.apache.log4j.spi.LoggerRepositoryEx;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
+import org.apache.logging.log4j.status.StatusLogger;
/**
* This plugin is designed to detect specific Zeroconf zones (Rendevouz/Bonjour,
@@ -90,7 +89,7 @@ import com.thoughtworks.xstream.io.xml.DomDriver;
*/
public class ZeroConfPlugin extends GUIPluginSkeleton {
- private static final Logger LOG = Logger.getLogger(ZeroConfPlugin.class);
+ private static final Logger LOG = LogManager.getLogger(ZeroConfPlugin.class);
private ZeroConfDeviceModel discoveredDevices = new ZeroConfDeviceModel();
@@ -588,7 +587,7 @@ public class ZeroConfPlugin extends GUIPluginSkeleton {
return receiver;
}
//not recognized
- LogLog.debug("Unable to find receiver for appender with service name: " + zone);
+ StatusLogger.getLogger().debug("Unable to find receiver for appender with service name: " + zone);
return null;
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/db/DBReceiver.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/db/DBReceiver.java b/src/main/java/org/apache/log4j/db/DBReceiver.java
index dbd1ef5..dbef7de 100644
--- a/src/main/java/org/apache/log4j/db/DBReceiver.java
+++ b/src/main/java/org/apache/log4j/db/DBReceiver.java
@@ -21,11 +21,6 @@ import org.apache.log4j.plugins.Pauseable;
import org.apache.log4j.plugins.Receiver;
import org.apache.log4j.scheduler.Scheduler;
import org.apache.log4j.spi.LoggerRepositoryEx;
-import org.apache.log4j.xml.DOMConfigurator;
-import org.apache.log4j.xml.UnrecognizedElementHandler;
-import org.w3c.dom.Element;
-
-import java.util.Properties;
/**
*
@@ -33,7 +28,7 @@ import java.util.Properties;
* @author Ceki Gülcü
*
*/
-public class DBReceiver extends Receiver implements Pauseable, UnrecognizedElementHandler {
+public class DBReceiver extends Receiver implements Pauseable {
/**
* By default we refresh data every 1000 milliseconds.
* @see #setRefreshMillis
@@ -120,21 +115,4 @@ public class DBReceiver extends Receiver implements Pauseable, UnrecognizedEleme
return paused;
}
- /**
- * {@inheritDoc}
- */
- public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
- if ("connectionSource".equals(element.getNodeName())) {
- Object instance =
- DOMConfigurator.parseElement(element, props, ConnectionSource.class);
- if (instance instanceof ConnectionSource) {
- ConnectionSource source = (ConnectionSource) instance;
- source.activateOptions();
- setConnectionSource(source);
- }
- return true;
- }
- return false;
- }
-
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/deb3b3c0/src/main/java/org/apache/log4j/db/DBReceiverJob.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/db/DBReceiverJob.java b/src/main/java/org/apache/log4j/db/DBReceiverJob.java
index 1e29663..6e5dcea 100644
--- a/src/main/java/org/apache/log4j/db/DBReceiverJob.java
+++ b/src/main/java/org/apache/log4j/db/DBReceiverJob.java
@@ -17,19 +17,24 @@
package org.apache.log4j.db;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.log4j.scheduler.Job;
import org.apache.log4j.spi.ComponentBase;
-import org.apache.log4j.spi.LocationInfo;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ThrowableInformation;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.impl.ThrowableProxy;
+import org.apache.logging.log4j.message.SimpleMessage;
+import org.apache.logging.log4j.spi.MutableThreadContextStack;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Hashtable;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Vector;
/**
@@ -77,19 +82,19 @@ class DBReceiverJob extends ComponentBase implements Job {
long timeStamp = 0L;
String level = null;
String threadName = null;
- Object message = null;
+ String message = null;
String ndc = null;
String className = null;
String methodName = null;
String fileName = null;
String lineNumber = null;
- Hashtable properties = new Hashtable();
+ Map<String, String> properties = new HashMap<>();
//event.setSequenceNumber(rs.getLong(1));
timeStamp = rs.getLong(2);
message = rs.getString(3);
- logger = Logger.getLogger(rs.getString(4));
+ logger = LogManager.getLogger(rs.getString(4));
level = rs.getString(5);
Level levelImpl = Level.toLevel(level.trim());
@@ -103,42 +108,43 @@ class DBReceiverJob extends ComponentBase implements Job {
methodName = rs.getString(11);
lineNumber = rs.getString(12).trim();
- LocationInfo locationInfo = null;
- if (fileName.equals(LocationInfo.NA)) {
- locationInfo = LocationInfo.NA_LOCATION_INFO;
+ StackTraceElement locationInfo;
+ if (fileName.equals("?")) {
+ locationInfo = null;
} else {
- locationInfo = new LocationInfo(fileName, className,
- methodName, lineNumber);
+ locationInfo = new StackTraceElement(fileName, className,
+ methodName, Integer.parseInt(lineNumber));
}
long id = rs.getLong(13);
//LogLog.info("Received event with id=" + id);
lastId = id;
- ThrowableInformation throwableInfo = null;
+ ThrowableProxy throwableInfo = null;
if ((mask & DBHelper.EXCEPTION_EXISTS) != 0) {
throwableInfo = getException(connection, id);
}
- LoggingEvent event = new LoggingEvent(logger.getName(),
- logger, timeStamp, levelImpl, message,
- threadName,
- throwableInfo,
- ndc,
- locationInfo,
- properties);
-
-
// Scott asked for this info to be
- event.setProperty("log4jid", Long.toString(id));
+ properties.put("log4jid", Long.toString(id));
+
+ LogEvent event = Log4jLogEvent.newBuilder()
+ .setLoggerFqcn(logger.getName())
+ .setLoggerName(logger.getName())
+ .setTimeMillis(timeStamp)
+ .setLevel(levelImpl)
+ .setMessage(new SimpleMessage(message))
+ .setThreadName(threadName)
+ .setThrownProxy(throwableInfo)
+ .setContextStack(new MutableThreadContextStack(Arrays.asList(ndc.split(" "))))
+ .setContextMap(properties)
+ .setSource(locationInfo)
+ .build();
if ((mask & DBHelper.PROPERTIES_EXIST) != 0) {
getProperties(connection, id, event);
}
-
-
-
if (!parentDBReceiver.isPaused()) {
parentDBReceiver.doPost(event);
}
@@ -171,7 +177,7 @@ class DBReceiverJob extends ComponentBase implements Job {
* @param event
* @throws SQLException
*/
- void getProperties(Connection connection, long id, LoggingEvent event)
+ void getProperties(Connection connection, long id, LogEvent event)
throws SQLException {
PreparedStatement statement = connection.prepareStatement(sqlProperties);
@@ -182,7 +188,7 @@ class DBReceiverJob extends ComponentBase implements Job {
while (rs.next()) {
String key = rs.getString(1);
String value = rs.getString(2);
- event.setProperty(key, value);
+ event.getContextMap().put(key, value);
}
} finally {
statement.close();
@@ -197,7 +203,7 @@ class DBReceiverJob extends ComponentBase implements Job {
* @param id
* @throws SQLException
*/
- ThrowableInformation getException(Connection connection, long id)
+ ThrowableProxy getException(Connection connection, long id)
throws SQLException {
PreparedStatement statement = null;
@@ -220,7 +226,7 @@ class DBReceiverJob extends ComponentBase implements Job {
strRep[i] = (String) v.get(i);
}
// we've filled strRep, we now attach it to the event
- return new ThrowableInformation(strRep);
+ return new ThrowableProxy(strRep);
} finally {
if (statement != null) {
statement.close();