Changeset 7420 in josm


Ignore:
Timestamp:
2014-08-16T14:10:24+02:00 (10 years ago)
Author:
Don-vip
Message:

fix #9435 - add last 10 error/warning messages to bug report

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/Main.java

    r7402 r7420  
    2323import java.util.Arrays;
    2424import java.util.Collection;
     25import java.util.Collections;
    2526import java.util.HashMap;
    2627import java.util.Iterator;
     
    7677import org.openstreetmap.josm.gui.help.HelpUtil;
    7778import org.openstreetmap.josm.gui.io.SaveLayersDialog;
     79import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
    7880import org.openstreetmap.josm.gui.layer.Layer;
    79 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
    8081import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    8182import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
     
    215216    protected static final Map<String, Throwable> NETWORK_ERRORS = new HashMap<>();
    216217
     218    // First lines of last 10 error and warning messages, used for bug reports
     219    private static final List<String> ERRORS_AND_WARNINGS = Collections.<String>synchronizedList(new ArrayList<String>());
     220
    217221    /**
    218222     * Logging level (5 = trace, 4 = debug, 3 = info, 2 = warn, 1 = error, 0 = none).
     
    220224     */
    221225    public static int logLevel = 3;
     226
     227    private static void rememberWarnErrorMsg(String msg) {
     228        // Only remember first line of message
     229        int idx = msg.indexOf('\n');
     230        if (idx > 0) {
     231            ERRORS_AND_WARNINGS.add(msg.substring(0, idx));
     232        } else {
     233            ERRORS_AND_WARNINGS.add(msg);
     234        }
     235        // Only keep 10 lines to avoid memory leak
     236        while (ERRORS_AND_WARNINGS.size() > 10) {
     237            ERRORS_AND_WARNINGS.remove(0);
     238        }
     239    }
     240
     241    /**
     242     * Replies the first lines of last 10 error and warning messages, used for bug reports
     243     * @return the first lines of last 10 error and warning messages
     244     * @since 7420
     245     */
     246    public static final Collection<String> getLastErrorAndWarnings() {
     247        return Collections.unmodifiableList(ERRORS_AND_WARNINGS);
     248    }
    222249
    223250    /**
     
    231258        if (msg != null && !msg.isEmpty()) {
    232259            System.err.println(tr("ERROR: {0}", msg));
     260            rememberWarnErrorMsg("E: "+msg);
    233261        }
    234262    }
     
    243271        if (msg != null && !msg.isEmpty()) {
    244272            System.err.println(tr("WARNING: {0}", msg));
     273            rememberWarnErrorMsg("W: "+msg);
    245274        }
    246275    }
  • trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java

    r7335 r7420  
    1111import java.util.ArrayList;
    1212import java.util.Arrays;
     13import java.util.Collection;
    1314import java.util.HashSet;
    1415import java.util.List;
     
    121122                        shortenParam(it, param, propJavaHome, propJavaHomeAlt);
    122123                    }
     124                } else if (value.startsWith("-X")) {
     125                    // Remove arguments like -Xbootclasspath/a, -Xverify:remote, that can be very long and unhelpful
     126                    it.remove();
    123127                }
    124128            }
     
    148152        text.append(PluginHandler.getBugReportText());
    149153        text.append("\n");
     154
     155        Collection<String> errorsWarnings = Main.getLastErrorAndWarnings();
     156        if (!errorsWarnings.isEmpty()) {
     157            text.append("Last errors/warnings:\n");
     158            for (String s : errorsWarnings) {
     159                text.append("- ").append(s).append("\n");
     160            }
     161            text.append("\n");
     162        }
    150163
    151164        return text.toString();
  • trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java

    r7348 r7420  
    12711271        }
    12721272        Collections.sort(pl);
     1273        if (!pl.isEmpty()) {
     1274            text.append("Plugins:\n");
     1275        }
    12731276        for (String s : pl) {
    1274             text.append("Plugin: ").append(s).append("\n");
     1277            text.append("- ").append(s).append("\n");
    12751278        }
    12761279        return text.toString();
Note: See TracChangeset for help on using the changeset viewer.