You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2018/03/13 07:04:49 UTC
[21/27] logging-chainsaw git commit: Reformat code for consistency
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/Generator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/Generator.java b/src/main/java/org/apache/log4j/chainsaw/Generator.java
index e735e95..7ad7baa 100644
--- a/src/main/java/org/apache/log4j/chainsaw/Generator.java
+++ b/src/main/java/org/apache/log4j/chainsaw/Generator.java
@@ -5,9 +5,9 @@
* 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.
@@ -17,9 +17,6 @@
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;
@@ -30,103 +27,105 @@ import org.apache.log4j.spi.LocationInfo;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.ThrowableInformation;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Class designed to stress, and/or test the Chainsaw GUI by sending it
* lots of Logging Events.
*
* @author Scott Deboy <sdeboy@apache.org>
- *
*/
public class Generator extends Receiver implements Runnable {
- private static final Logger logger1 =
- Logger.getLogger("com.mycompany.mycomponentA");
- private static final Logger logger2 =
- Logger.getLogger("com.mycompany.mycomponentB");
- private static final Logger logger3 =
- Logger.getLogger("com.someothercompany.corecomponent");
- private final String baseString_;
- private Thread thread;
- private boolean shutdown;
+ private static final Logger logger1 =
+ Logger.getLogger("com.mycompany.mycomponentA");
+ private static final Logger logger2 =
+ Logger.getLogger("com.mycompany.mycomponentB");
+ private static final Logger logger3 =
+ Logger.getLogger("com.someothercompany.corecomponent");
+ private final String baseString_;
+ private Thread thread;
+ private boolean shutdown;
- public Generator(String name) {
- setName(name);
- baseString_ = name;
- }
+ public Generator(String name) {
+ setName(name);
+ baseString_ = name;
+ }
- private LoggingEvent createEvent(
- Level level, Logger logger, String msg, Throwable t) {
- ThrowableInformation ti = new ThrowableInformation(t);
- Map<String, String> 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, System.currentTimeMillis(), level, msg, "Thread=1", ti, "NDC value", li, properties);
- return e;
- }
+ private LoggingEvent createEvent(
+ Level level, Logger logger, String msg, Throwable t) {
+ ThrowableInformation ti = new ThrowableInformation(t);
+ Map<String, String> 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, System.currentTimeMillis(), level, msg, "Thread=1", ti, "NDC value", li, properties);
+ return e;
+ }
- public void run() {
- NDC.push(baseString_);
- MDC.put("some string", "some value" + baseString_);
+ public void run() {
+ NDC.push(baseString_);
+ MDC.put("some string", "some value" + baseString_);
- int i = 0;
+ int i = 0;
- while (!shutdown) {
- doPost(createEvent(Level.TRACE, logger1, "tracemsg" + i++, null));
- doPost(
- createEvent(
- Level.DEBUG, logger1,
- "debugmsg " + i++
- + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
- null));
- doPost(createEvent(Level.INFO, logger1, "infomsg " + i++, null));
- doPost(createEvent(Level.WARN, logger1, "warnmsg " + i++, null));
- doPost(createEvent(Level.ERROR, logger1, "errormsg " + i++, null));
- doPost(createEvent(Level.FATAL, logger1, "fatalmsg " + i++, new Exception("someexception-" + baseString_)));
- doPost(createEvent(Level.TRACE, logger2, "tracemsg" + i++, null));
- doPost(
- createEvent(
- Level.DEBUG, logger2,
- "debugmsg " + i++
- + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
- null));
- doPost(createEvent(Level.INFO, logger2, "infomsg " + i++, null));
- doPost(createEvent(Level.WARN, logger2, "warnmsg " + i++, null));
- doPost(createEvent(Level.ERROR, logger2, "errormsg " + i++, null));
- doPost(createEvent(Level.FATAL, logger2, "fatalmsg " + i++, new Exception("someexception-" + baseString_)));
- doPost(createEvent(Level.TRACE, logger3, "tracemsg" + i++, null));
- doPost(
- createEvent(
- Level.DEBUG, logger3,
- "debugmsg " + i++
- + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
- null));
- doPost(createEvent(Level.INFO, logger3, "infomsg " + i++, null));
- doPost(createEvent(Level.WARN, logger3, "warnmsg " + i++, null));
- doPost(createEvent(Level.ERROR, logger3, "errormsg " + i++, null));
- doPost(createEvent(Level.FATAL, logger3, "fatalmsg " + i++, new Exception("someexception-" + baseString_)));
+ while (!shutdown) {
+ doPost(createEvent(Level.TRACE, logger1, "tracemsg" + i++, null));
+ doPost(
+ createEvent(
+ Level.DEBUG, logger1,
+ "debugmsg " + i++
+ + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
+ null));
+ doPost(createEvent(Level.INFO, logger1, "infomsg " + i++, null));
+ doPost(createEvent(Level.WARN, logger1, "warnmsg " + i++, null));
+ doPost(createEvent(Level.ERROR, logger1, "errormsg " + i++, null));
+ doPost(createEvent(Level.FATAL, logger1, "fatalmsg " + i++, new Exception("someexception-" + baseString_)));
+ doPost(createEvent(Level.TRACE, logger2, "tracemsg" + i++, null));
+ doPost(
+ createEvent(
+ Level.DEBUG, logger2,
+ "debugmsg " + i++
+ + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
+ null));
+ doPost(createEvent(Level.INFO, logger2, "infomsg " + i++, null));
+ doPost(createEvent(Level.WARN, logger2, "warnmsg " + i++, null));
+ doPost(createEvent(Level.ERROR, logger2, "errormsg " + i++, null));
+ doPost(createEvent(Level.FATAL, logger2, "fatalmsg " + i++, new Exception("someexception-" + baseString_)));
+ doPost(createEvent(Level.TRACE, logger3, "tracemsg" + i++, null));
+ doPost(
+ createEvent(
+ Level.DEBUG, logger3,
+ "debugmsg " + i++
+ + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
+ null));
+ doPost(createEvent(Level.INFO, logger3, "infomsg " + i++, null));
+ doPost(createEvent(Level.WARN, logger3, "warnmsg " + i++, null));
+ doPost(createEvent(Level.ERROR, logger3, "errormsg " + i++, null));
+ doPost(createEvent(Level.FATAL, logger3, "fatalmsg " + i++, new Exception("someexception-" + baseString_)));
- try {
- Thread.sleep(1000);
- } catch (InterruptedException ie) {
- }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ie) {
+ }
+ }
}
- }
- /* (non-Javadoc)
- * @see org.apache.log4j.plugins.Plugin#shutdown()
- */
- public void shutdown() {
- shutdown = true;
- }
+ /* (non-Javadoc)
+ * @see org.apache.log4j.plugins.Plugin#shutdown()
+ */
+ public void shutdown() {
+ shutdown = true;
+ }
- /* (non-Javadoc)
- * @see org.apache.log4j.spi.OptionHandler#activateOptions()
- */
- public void activateOptions() {
- thread = new Thread(this);
- thread.setPriority(Thread.MIN_PRIORITY);
- thread.start();
- }
+ /* (non-Javadoc)
+ * @see org.apache.log4j.spi.OptionHandler#activateOptions()
+ */
+ public void activateOptions() {
+ thread = new Thread(this);
+ thread.setPriority(Thread.MIN_PRIORITY);
+ thread.start();
+ }
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/GeneratorBeanInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/GeneratorBeanInfo.java b/src/main/java/org/apache/log4j/chainsaw/GeneratorBeanInfo.java
index 0c3d788..fd9fd16 100644
--- a/src/main/java/org/apache/log4j/chainsaw/GeneratorBeanInfo.java
+++ b/src/main/java/org/apache/log4j/chainsaw/GeneratorBeanInfo.java
@@ -5,9 +5,9 @@
* 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.
@@ -25,20 +25,19 @@ import java.beans.SimpleBeanInfo;
* Generator plugin
*
* @author Paul Smith <psmith@apache.org>
- *
*/
public class GeneratorBeanInfo extends SimpleBeanInfo {
- /* (non-Javadoc)
- * @see java.beans.BeanInfo#getPropertyDescriptors()
- */
- public PropertyDescriptor[] getPropertyDescriptors() {
- try {
- return new PropertyDescriptor[] {
- new PropertyDescriptor("name", Generator.class),
- };
- } catch (Exception e) {
- }
+ /* (non-Javadoc)
+ * @see java.beans.BeanInfo#getPropertyDescriptors()
+ */
+ public PropertyDescriptor[] getPropertyDescriptors() {
+ try {
+ return new PropertyDescriptor[]{
+ new PropertyDescriptor("name", Generator.class),
+ };
+ } catch (Exception e) {
+ }
- return null;
- }
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/JSortTable.java b/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
index 601fc3b..64ae803 100644
--- a/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
+++ b/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
@@ -5,9 +5,9 @@
* 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.
@@ -17,15 +17,14 @@
package org.apache.log4j.chainsaw;
-import java.awt.event.InputEvent;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
-import javax.swing.JTable;
+import javax.swing.*;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
-
-import org.apache.log4j.chainsaw.helper.SwingHelper;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
/**
@@ -34,129 +33,128 @@ import org.apache.log4j.chainsaw.helper.SwingHelper;
*
* @author Claude Duguay
* @author Scott Deboy <sdeboy@apache.org>
- *
*/
public class JSortTable extends JTable implements MouseListener {
- protected int sortedColumnIndex = -1;
- protected boolean sortedColumnAscending = true;
- private String sortedColumn;
- private int lastSelectedColumn = -1;
-
- public JSortTable(SortTableModel model) {
- super(model);
- initSortHeader();
- }
-
- public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
- //selection of the msg field causes rendering to flash...skip over it
- int colToSelect = columnIndex;
- //CHAINSAW columns are 1-based indexes
- if (columnIndex + 1 == ChainsawColumns.INDEX_MESSAGE_COL_NAME) {
- colToSelect = lastSelectedColumn < columnIndex ? columnIndex + 1 : columnIndex - 1;
- super.changeSelection(rowIndex, colToSelect, toggle, extend);
- } else {
- super.changeSelection(rowIndex, columnIndex, toggle, extend);
+ protected int sortedColumnIndex = -1;
+ protected boolean sortedColumnAscending = true;
+ private String sortedColumn;
+ private int lastSelectedColumn = -1;
+
+ public JSortTable(SortTableModel model) {
+ super(model);
+ initSortHeader();
}
- lastSelectedColumn = colToSelect;
- }
-
- protected void initSortHeader() {
- JTableHeader header = getTableHeader();
- header.setDefaultRenderer(new SortHeaderRenderer());
- header.addMouseListener(this);
- }
-
- public int getSortedColumnIndex() {
- return sortedColumnIndex;
- }
-
- public void updateSortedColumn() {
- if (sortedColumn != null) {
- try {
- sortedColumnIndex = columnModel.getColumnIndex(sortedColumn);
- getTableHeader().resizeAndRepaint();
- } catch (IllegalArgumentException ie) {//nothing...column is not in the model
- setSortedColumnIndex(-1);
- }
- }
- }
-
- public void setSortedColumnIndex(int index) {
- sortedColumnIndex = index;
- if (sortedColumnIndex > -1) {
- SortTableModel model = (SortTableModel) getModel();
- model.sortColumn(sortedColumnIndex, sortedColumnAscending);
+
+ public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
+ //selection of the msg field causes rendering to flash...skip over it
+ int colToSelect = columnIndex;
+ //CHAINSAW columns are 1-based indexes
+ if (columnIndex + 1 == ChainsawColumns.INDEX_MESSAGE_COL_NAME) {
+ colToSelect = lastSelectedColumn < columnIndex ? columnIndex + 1 : columnIndex - 1;
+ super.changeSelection(rowIndex, colToSelect, toggle, extend);
+ } else {
+ super.changeSelection(rowIndex, columnIndex, toggle, extend);
+ }
+ lastSelectedColumn = colToSelect;
+ }
+
+ protected void initSortHeader() {
+ JTableHeader header = getTableHeader();
+ header.setDefaultRenderer(new SortHeaderRenderer());
+ header.addMouseListener(this);
}
- getTableHeader().resizeAndRepaint();
- }
-
- //Allow synchronous updates if already on the EDT
- private void scrollTo(final int row, final int col) {
- SwingHelper.invokeOnEDT(() -> {
- final int currentRow = getSelectedRow();
- if ((row > -1) && (row < getRowCount())) {
- try {
- //get the requested row off of the bottom and top of the screen by making the 5 rows around the requested row visible
- //if new past current row, scroll to display the 20th row past new selected row
- scrollRectToVisible(getCellRect(row, col, true));
- if (row > currentRow) {
- scrollRectToVisible(getCellRect(row + 5, col, true));
- }
- if (row < currentRow) {
- scrollRectToVisible(getCellRect(row - 5, col, true));
- }
- scrollRectToVisible(getCellRect(row, col, true));
- setRowSelectionInterval(row, row);
- } catch (IllegalArgumentException iae) {
- //ignore..out of bounds
+
+ public int getSortedColumnIndex() {
+ return sortedColumnIndex;
+ }
+
+ public void updateSortedColumn() {
+ if (sortedColumn != null) {
+ try {
+ sortedColumnIndex = columnModel.getColumnIndex(sortedColumn);
+ getTableHeader().resizeAndRepaint();
+ } catch (IllegalArgumentException ie) {//nothing...column is not in the model
+ setSortedColumnIndex(-1);
+ }
}
- }
- });
- }
-
- public void scrollToRow(int row) {
- scrollTo(row, columnAtPoint(getVisibleRect().getLocation()));
- }
-
- public boolean isSortedColumnAscending() {
- return sortedColumnAscending;
- }
-
- public void mouseClicked(MouseEvent event) {
-
- if(event.getClickCount()<2 || event.isPopupTrigger()){
- return;
- }else if(event.getClickCount()>1 && ((event.getModifiers() & InputEvent.BUTTON2_MASK)>0)){
- return;
- }
-
- TableColumnModel colModel = getColumnModel();
- int index = colModel.getColumnIndexAtX(event.getX());
- int modelIndex = colModel.getColumn(index).getModelIndex();
- SortTableModel model = (SortTableModel) getModel();
-
- if (model.isSortable(modelIndex)) {
- // toggle ascension, if already sorted
- if (sortedColumnIndex == index) {
- sortedColumnAscending = !sortedColumnAscending;
- }
-
- sortedColumnIndex = index;
- sortedColumn = colModel.getColumn(index).getHeaderValue().toString();
- model.sortColumn(modelIndex, sortedColumnAscending);
- getTableHeader().resizeAndRepaint();
}
- }
- public void mousePressed(MouseEvent event) {
- }
+ public void setSortedColumnIndex(int index) {
+ sortedColumnIndex = index;
+ if (sortedColumnIndex > -1) {
+ SortTableModel model = (SortTableModel) getModel();
+ model.sortColumn(sortedColumnIndex, sortedColumnAscending);
+ }
+ getTableHeader().resizeAndRepaint();
+ }
- public void mouseReleased(MouseEvent event) {
- }
+ //Allow synchronous updates if already on the EDT
+ private void scrollTo(final int row, final int col) {
+ SwingHelper.invokeOnEDT(() -> {
+ final int currentRow = getSelectedRow();
+ if ((row > -1) && (row < getRowCount())) {
+ try {
+ //get the requested row off of the bottom and top of the screen by making the 5 rows around the requested row visible
+ //if new past current row, scroll to display the 20th row past new selected row
+ scrollRectToVisible(getCellRect(row, col, true));
+ if (row > currentRow) {
+ scrollRectToVisible(getCellRect(row + 5, col, true));
+ }
+ if (row < currentRow) {
+ scrollRectToVisible(getCellRect(row - 5, col, true));
+ }
+ scrollRectToVisible(getCellRect(row, col, true));
+ setRowSelectionInterval(row, row);
+ } catch (IllegalArgumentException iae) {
+ //ignore..out of bounds
+ }
+ }
+ });
+ }
+
+ public void scrollToRow(int row) {
+ scrollTo(row, columnAtPoint(getVisibleRect().getLocation()));
+ }
- public void mouseEntered(MouseEvent event) {
- }
+ public boolean isSortedColumnAscending() {
+ return sortedColumnAscending;
+ }
+
+ public void mouseClicked(MouseEvent event) {
- public void mouseExited(MouseEvent event) {
- }
+ if (event.getClickCount() < 2 || event.isPopupTrigger()) {
+ return;
+ } else if (event.getClickCount() > 1 && ((event.getModifiers() & InputEvent.BUTTON2_MASK) > 0)) {
+ return;
+ }
+
+ TableColumnModel colModel = getColumnModel();
+ int index = colModel.getColumnIndexAtX(event.getX());
+ int modelIndex = colModel.getColumn(index).getModelIndex();
+ SortTableModel model = (SortTableModel) getModel();
+
+ if (model.isSortable(modelIndex)) {
+ // toggle ascension, if already sorted
+ if (sortedColumnIndex == index) {
+ sortedColumnAscending = !sortedColumnAscending;
+ }
+
+ sortedColumnIndex = index;
+ sortedColumn = colModel.getColumn(index).getHeaderValue().toString();
+ model.sortColumn(modelIndex, sortedColumnAscending);
+ getTableHeader().resizeAndRepaint();
+ }
+ }
+
+ public void mousePressed(MouseEvent event) {
+ }
+
+ public void mouseReleased(MouseEvent event) {
+ }
+
+ public void mouseEntered(MouseEvent event) {
+ }
+
+ public void mouseExited(MouseEvent event) {
+ }
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java b/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java
index 89ad68a..543c69b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java
+++ b/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java
@@ -16,24 +16,22 @@
*/
package org.apache.log4j.chainsaw;
-import java.awt.Font;
-
-import javax.swing.UIManager;
+import javax.swing.*;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import javax.swing.text.html.HTMLDocument;
+import java.awt.*;
/**
* Apply system font and size (normal size + 1) rule if the JEditorPane document contains html.
*/
-public class JTextComponentFormatter
-{
+public class JTextComponentFormatter {
public static void applySystemFontAndSize(JTextComponent textComponent) {
Document document = textComponent.getDocument();
if (document instanceof HTMLDocument) {
- Font font = UIManager.getFont("Label.font");
- String bodyRule = "body { font-family: " + font.getFamily() + "; font-size: " + (font.getSize() + 1) + "pt; }";
- ((HTMLDocument)document).getStyleSheet().addRule(bodyRule);
+ Font font = UIManager.getFont("Label.font");
+ String bodyRule = "body { font-family: " + font.getFamily() + "; font-size: " + (font.getSize() + 1) + "pt; }";
+ ((HTMLDocument) document).getStyleSheet().addRule(bodyRule);
}
}
}
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java b/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
index 032c267..16c4fc5 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
@@ -16,42 +16,9 @@
*/
package org.apache.log4j.chainsaw;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
import org.apache.log4j.chainsaw.messages.MessageCenter;
import org.apache.log4j.helpers.OptionConverter;
-import org.apache.log4j.pattern.ClassNamePatternConverter;
-import org.apache.log4j.pattern.DatePatternConverter;
-import org.apache.log4j.pattern.FileLocationPatternConverter;
-import org.apache.log4j.pattern.FullLocationPatternConverter;
-import org.apache.log4j.pattern.LevelPatternConverter;
-import org.apache.log4j.pattern.LineLocationPatternConverter;
-import org.apache.log4j.pattern.LineSeparatorPatternConverter;
-import org.apache.log4j.pattern.LiteralPatternConverter;
-import org.apache.log4j.pattern.LoggerPatternConverter;
-import org.apache.log4j.pattern.LoggingEventPatternConverter;
-import org.apache.log4j.pattern.MessagePatternConverter;
-import org.apache.log4j.pattern.MethodLocationPatternConverter;
-import org.apache.log4j.pattern.NDCPatternConverter;
-import org.apache.log4j.pattern.PatternParser;
-import org.apache.log4j.pattern.PropertiesPatternConverter;
-import org.apache.log4j.pattern.RelativeTimePatternConverter;
-import org.apache.log4j.pattern.SequenceNumberPatternConverter;
-import org.apache.log4j.pattern.ThreadPatternConverter;
+import org.apache.log4j.pattern.*;
import org.apache.log4j.xml.Log4jEntityResolver;
import org.apache.log4j.xml.SAXErrorHandler;
import org.w3c.dom.Document;
@@ -61,8 +28,16 @@ import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-public class LogFilePatternLayoutBuilder
-{
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
+public class LogFilePatternLayoutBuilder {
public static String getLogFormatFromPatternLayout(String patternLayout) {
String input = OptionConverter.convertSpecialChars(patternLayout);
List converters = new ArrayList();
@@ -74,31 +49,31 @@ public class LogFilePatternLayoutBuilder
}
public static String getTimeStampFormat(String patternLayout) {
- int basicIndex = patternLayout.indexOf("%d");
- if (basicIndex < 0) {
- return null;
- }
+ int basicIndex = patternLayout.indexOf("%d");
+ if (basicIndex < 0) {
+ return null;
+ }
- int index = patternLayout.indexOf("%d{");
- //%d - default
- if (index < 0) {
- return "yyyy-MM-dd HH:mm:ss,SSS";
- }
+ int index = patternLayout.indexOf("%d{");
+ //%d - default
+ if (index < 0) {
+ return "yyyy-MM-dd HH:mm:ss,SSS";
+ }
- int length = patternLayout.substring(index).indexOf("}");
- String timestampFormat = patternLayout.substring(index + "%d{".length(), index + length);
- if (timestampFormat.equals("ABSOLUTE")) {
- return "HH:mm:ss,SSS";
- }
- if (timestampFormat.equals("ISO8601")) {
- return "yyyy-MM-dd HH:mm:ss,SSS";
- }
- if (timestampFormat.equals("DATE")) {
- return "dd MMM yyyy HH:mm:ss,SSS";
- }
- return timestampFormat;
+ int length = patternLayout.substring(index).indexOf("}");
+ String timestampFormat = patternLayout.substring(index + "%d{".length(), index + length);
+ if (timestampFormat.equals("ABSOLUTE")) {
+ return "HH:mm:ss,SSS";
+ }
+ if (timestampFormat.equals("ISO8601")) {
+ return "yyyy-MM-dd HH:mm:ss,SSS";
+ }
+ if (timestampFormat.equals("DATE")) {
+ return "dd MMM yyyy HH:mm:ss,SSS";
+ }
+ return timestampFormat;
}
-
+
private static String getFormatFromConverters(List converters) {
StringBuffer buffer = new StringBuffer();
for (Object converter1 : converters) {
@@ -148,59 +123,59 @@ public class LogFilePatternLayoutBuilder
return buffer.toString();
}
- public static Map<String, Map<String, String>> getAppenderConfiguration(File file) {
- try {
- return getXMLFileAppenderConfiguration(file);
- } catch (IOException | SAXException | ParserConfigurationException e) {
- //ignore
- }
- try {
- return getPropertiesFileAppenderConfiguration(file);
- } catch (Exception e) {
- //ignore
+ public static Map<String, Map<String, String>> getAppenderConfiguration(File file) {
+ try {
+ return getXMLFileAppenderConfiguration(file);
+ } catch (IOException | SAXException | ParserConfigurationException e) {
+ //ignore
+ }
+ try {
+ return getPropertiesFileAppenderConfiguration(file);
+ } catch (Exception e) {
+ //ignore
+ }
+ //don't return null
+ return new HashMap<>();
}
- //don't return null
- return new HashMap<>();
- }
- public static Map<String, Map<String, String>> getPropertiesFileAppenderConfiguration(File propertyFile) throws IOException {
- Map<String, Map<String, String>> result = new HashMap<>();
- String appenderPrefix = "log4j.appender";
- Properties props = new Properties();
- FileInputStream inputStream = null;
- try {
- inputStream = new FileInputStream(propertyFile);
- props.load(inputStream);
- Enumeration propertyNames = props.propertyNames();
- Map<String, String> appenders = new HashMap<>();
- while (propertyNames.hasMoreElements()) {
- String propertyName = propertyNames.nextElement().toString();
- if (propertyName.startsWith(appenderPrefix)) {
- String value = propertyName.substring(appenderPrefix.length() + 1);
- if (!value.contains(".")) {
- //no sub-values - this entry is the appender name & class
- appenders.put(value, props.getProperty(propertyName).trim());
- }
- }
- }
- for (Object o : appenders.entrySet()) {
- Map.Entry appenderEntry = (Map.Entry) o;
- String appenderName = appenderEntry.getKey().toString();
- String appenderClassName = appenderEntry.getValue().toString();
- if (appenderClassName.toLowerCase(Locale.ENGLISH).endsWith("fileappender")) {
- String layout = props.getProperty(appenderPrefix + "." + appenderName + ".layout");
- if (layout != null && layout.trim().equals("org.apache.log4j.PatternLayout")) {
- String conversion = props.getProperty(appenderPrefix + "." + appenderName + ".layout.ConversionPattern");
- String file = props.getProperty(appenderPrefix + "." + appenderName + ".File");
- if (conversion != null && file != null) {
- Map<String, String> entry = new HashMap<>();
- entry.put("file", file.trim());
- entry.put("conversion", conversion.trim());
- result.put(appenderName, entry);
+ public static Map<String, Map<String, String>> getPropertiesFileAppenderConfiguration(File propertyFile) throws IOException {
+ Map<String, Map<String, String>> result = new HashMap<>();
+ String appenderPrefix = "log4j.appender";
+ Properties props = new Properties();
+ FileInputStream inputStream = null;
+ try {
+ inputStream = new FileInputStream(propertyFile);
+ props.load(inputStream);
+ Enumeration propertyNames = props.propertyNames();
+ Map<String, String> appenders = new HashMap<>();
+ while (propertyNames.hasMoreElements()) {
+ String propertyName = propertyNames.nextElement().toString();
+ if (propertyName.startsWith(appenderPrefix)) {
+ String value = propertyName.substring(appenderPrefix.length() + 1);
+ if (!value.contains(".")) {
+ //no sub-values - this entry is the appender name & class
+ appenders.put(value, props.getProperty(propertyName).trim());
+ }
+ }
+ }
+ for (Object o : appenders.entrySet()) {
+ Map.Entry appenderEntry = (Map.Entry) o;
+ String appenderName = appenderEntry.getKey().toString();
+ String appenderClassName = appenderEntry.getValue().toString();
+ if (appenderClassName.toLowerCase(Locale.ENGLISH).endsWith("fileappender")) {
+ String layout = props.getProperty(appenderPrefix + "." + appenderName + ".layout");
+ if (layout != null && layout.trim().equals("org.apache.log4j.PatternLayout")) {
+ String conversion = props.getProperty(appenderPrefix + "." + appenderName + ".layout.ConversionPattern");
+ String file = props.getProperty(appenderPrefix + "." + appenderName + ".File");
+ if (conversion != null && file != null) {
+ Map<String, String> entry = new HashMap<>();
+ entry.put("file", file.trim());
+ entry.put("conversion", conversion.trim());
+ result.put(appenderName, entry);
+ }
}
}
}
- }
/*
example:
log4j.appender.R=org.apache.log4j.RollingFileAppender
@@ -210,80 +185,78 @@ public class LogFilePatternLayoutBuilder
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d - %p %t %c - %m%n
*/
+ } catch (IOException ioe) {
+ } finally {
+ if (inputStream != null) {
+ inputStream.close();
+ }
+ }
+ //don't return null
+ return result;
}
- catch (IOException ioe) {
- }
- finally {
- if (inputStream != null) {
- inputStream.close();
- }
- }
- //don't return null
- return result;
- }
- private static Map<String, Map<String, String>> getXMLFileAppenderConfiguration(File file) throws IOException, ParserConfigurationException, SAXException {
- Map<String, Map<String, String>> result = new HashMap<>();
- try (InputStream stream = file.toURI().toURL().openStream()) {
- InputSource src = new InputSource(stream);
- src.setSystemId(file.toURI().toURL().toString());
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+ private static Map<String, Map<String, String>> getXMLFileAppenderConfiguration(File file) throws IOException, ParserConfigurationException, SAXException {
+ Map<String, Map<String, String>> result = new HashMap<>();
+ try (InputStream stream = file.toURI().toURL().openStream()) {
+ InputSource src = new InputSource(stream);
+ src.setSystemId(file.toURI().toURL().toString());
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder docBuilder = dbf.newDocumentBuilder();
- docBuilder.setErrorHandler(new SAXErrorHandler());
- docBuilder.setEntityResolver(new Log4jEntityResolver());
- Document doc = docBuilder.parse(src);
- NodeList appenders = doc.getElementsByTagName("appender");
- for (int i = 0; i < appenders.getLength(); i++) {
- Node appender = appenders.item(i);
- NamedNodeMap appenderAttributes = appender.getAttributes();
+ docBuilder.setErrorHandler(new SAXErrorHandler());
+ docBuilder.setEntityResolver(new Log4jEntityResolver());
+ Document doc = docBuilder.parse(src);
+ NodeList appenders = doc.getElementsByTagName("appender");
+ for (int i = 0; i < appenders.getLength(); i++) {
+ Node appender = appenders.item(i);
+ NamedNodeMap appenderAttributes = appender.getAttributes();
// Class appenderClass = Class.forName(map.getNamedItem("class").getNodeValue());
- Node appenderClass = appenderAttributes.getNamedItem("class");
- if (appenderAttributes.getNamedItem("name") != null && appenderClass != null && appenderClass.getNodeValue() != null) {
- //all log4j fileappenders end in fileappender..if a custom fileappender also ends in fileappender and uses the same dom nodes to be loaded,
- //try to parse the nodes as well
- if (appenderClass.getNodeValue().toLowerCase(Locale.ENGLISH).endsWith("fileappender")) {
- String appenderName = appenderAttributes.getNamedItem("name").getNodeValue();
- //subclass of FileAppender - add it
- Map<String, String> entry = new HashMap<>();
- NodeList appenderChildren = appender.getChildNodes();
- for (int j = 0; j < appenderChildren.getLength(); j++) {
- Node appenderChild = appenderChildren.item(j);
- if (appenderChild.getNodeName().equals("param") && appenderChild.hasAttributes()) {
- Node fileNameNode = appenderChild.getAttributes().getNamedItem("name");
- if (fileNameNode != null && fileNameNode.getNodeValue().equalsIgnoreCase("file")) {
- Node fileValueNode = appenderChild.getAttributes().getNamedItem("value");
- if (fileValueNode != null) {
- entry.put("file", fileValueNode.getNodeValue());
- }
- }
- }
- if (appenderChild.getNodeName().equalsIgnoreCase("layout") && appenderChild.hasAttributes()) {
- NamedNodeMap layoutAttributes = appenderChild.getAttributes();
- Node layoutNode = layoutAttributes.getNamedItem("class");
- if (layoutNode != null && layoutNode.getNodeValue() != null && layoutNode.getNodeValue().equalsIgnoreCase("org.apache.log4j.PatternLayout")) {
- NodeList layoutChildren = appenderChild.getChildNodes();
- for (int k = 0; k < layoutChildren.getLength(); k++) {
- Node layoutChild = layoutChildren.item(k);
- if (layoutChild.getNodeName().equals("param") && layoutChild.hasAttributes()) {
- Node layoutName = layoutChild.getAttributes().getNamedItem("name");
- if (layoutName != null && layoutName.getNodeValue() != null && layoutName.getNodeValue().equalsIgnoreCase("conversionpattern")) {
- Node conversionValue = layoutChild.getAttributes().getNamedItem("value");
- if (conversionValue != null) {
- entry.put("conversion", conversionValue.getNodeValue());
- }
- }
- }
- }
- }
- }
- }
- result.put(appenderName, entry);
- }
- }
- }
- }
- MessageCenter.getInstance().getLogger().info("getXMLFileAppenderConfiguration for file: " + file + ", result: " + result);
- return result;
- }
+ Node appenderClass = appenderAttributes.getNamedItem("class");
+ if (appenderAttributes.getNamedItem("name") != null && appenderClass != null && appenderClass.getNodeValue() != null) {
+ //all log4j fileappenders end in fileappender..if a custom fileappender also ends in fileappender and uses the same dom nodes to be loaded,
+ //try to parse the nodes as well
+ if (appenderClass.getNodeValue().toLowerCase(Locale.ENGLISH).endsWith("fileappender")) {
+ String appenderName = appenderAttributes.getNamedItem("name").getNodeValue();
+ //subclass of FileAppender - add it
+ Map<String, String> entry = new HashMap<>();
+ NodeList appenderChildren = appender.getChildNodes();
+ for (int j = 0; j < appenderChildren.getLength(); j++) {
+ Node appenderChild = appenderChildren.item(j);
+ if (appenderChild.getNodeName().equals("param") && appenderChild.hasAttributes()) {
+ Node fileNameNode = appenderChild.getAttributes().getNamedItem("name");
+ if (fileNameNode != null && fileNameNode.getNodeValue().equalsIgnoreCase("file")) {
+ Node fileValueNode = appenderChild.getAttributes().getNamedItem("value");
+ if (fileValueNode != null) {
+ entry.put("file", fileValueNode.getNodeValue());
+ }
+ }
+ }
+ if (appenderChild.getNodeName().equalsIgnoreCase("layout") && appenderChild.hasAttributes()) {
+ NamedNodeMap layoutAttributes = appenderChild.getAttributes();
+ Node layoutNode = layoutAttributes.getNamedItem("class");
+ if (layoutNode != null && layoutNode.getNodeValue() != null && layoutNode.getNodeValue().equalsIgnoreCase("org.apache.log4j.PatternLayout")) {
+ NodeList layoutChildren = appenderChild.getChildNodes();
+ for (int k = 0; k < layoutChildren.getLength(); k++) {
+ Node layoutChild = layoutChildren.item(k);
+ if (layoutChild.getNodeName().equals("param") && layoutChild.hasAttributes()) {
+ Node layoutName = layoutChild.getAttributes().getNamedItem("name");
+ if (layoutName != null && layoutName.getNodeValue() != null && layoutName.getNodeValue().equalsIgnoreCase("conversionpattern")) {
+ Node conversionValue = layoutChild.getAttributes().getNamedItem("value");
+ if (conversionValue != null) {
+ entry.put("conversion", conversionValue.getNodeValue());
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ result.put(appenderName, entry);
+ }
+ }
+ }
+ }
+ MessageCenter.getInstance().getLogger().info("getXMLFileAppenderConfiguration for file: " + file + ", result: " + result);
+ return result;
+ }
}