diff --git a/htroot/ViewLog_p.html b/htroot/ViewLog_p.html index dd833107d..b1799671b 100644 --- a/htroot/ViewLog_p.html +++ b/htroot/ViewLog_p.html @@ -6,6 +6,7 @@ #%env/templates/header.template%# + #(submenu)#::#%env/templates/submenuViewLog.template%##(/submenu)#

Server Log

diff --git a/htroot/ViewLog_p.java b/htroot/ViewLog_p.java index 391bd43a8..db335e4d6 100644 --- a/htroot/ViewLog_p.java +++ b/htroot/ViewLog_p.java @@ -1,134 +1,124 @@ -//ViewLog_p.java -//----------------------- -//part of the AnomicHTTPD caching proxy -//(C) by Michael Peter Christen; mc@yacy.net -//first published on http://www.anomic.de -//Frankfurt, Germany, 2004 -// -//This File is contributed by Alexander Schier -//last major change: 14.12.2004 -// -//This program is free software; you can redistribute it and/or modify -//it under the terms of the GNU General Public License as published by -//the Free Software Foundation; either version 2 of the License, or -//(at your option) any later version. -// -//This program is distributed in the hope that it will be useful, -//but WITHOUT ANY WARRANTY; without even the implied warranty of -//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//GNU General Public License for more details. -// -//You should have received a copy of the GNU General Public License -//along with this program; if not, write to the Free Software -//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -//You must compile this file with -//javac -classpath .:../classes ViewLog_p.java -//if the shell's current path is HTROOT - -import java.util.logging.Handler; -import java.util.logging.Logger; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.regex.PatternSyntaxException; - -import net.yacy.cora.protocol.RequestHeader; -import net.yacy.kelondro.logging.GuiHandler; -import net.yacy.kelondro.logging.Log; - -import de.anomic.server.serverObjects; -import de.anomic.server.serverSwitch; - -public class ViewLog_p { - - public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) { - final serverObjects prop = new serverObjects(); - String[] log = new String[0]; - boolean reversed = false; - boolean json = false; - int maxlines = 400, lines = 200; - /* Usually a regex like this would make no sense, ".*" would be - * sufficient, but ".*.*" makes it a little bit more convenient - * for the user to input regexes like ".*FOO.*" in the HTML - * interface. - */ - String filter = ".*.*"; - - if(post != null){ - reversed = (post.containsKey("mode") && (post.get("mode")).equals("reversed")); - json = post.containsKey("json"); - - if(post.containsKey("lines")){ - lines = Integer.parseInt(post.get("lines")); - } - - if(post.containsKey("filter")){ - filter = post.get("filter"); - } - } - - - final Logger logger = Logger.getLogger(""); - final Handler[] handlers = logger.getHandlers(); - for (final Handler handler : handlers) { - if (handler instanceof GuiHandler) { - maxlines = ((GuiHandler)handler).getSize(); - if (lines > maxlines) lines = maxlines; - log = ((GuiHandler)handler).getLogLines(reversed,lines); - } - } - - prop.put("reverseChecked", reversed ? "1" : "0"); - prop.put("lines", lines); - prop.put("maxlines",maxlines); - prop.putHTML("filter", filter); - - // trying to compile the regular expression filter expression - Matcher filterMatcher = null; - try { - final Pattern filterPattern = Pattern.compile(filter,Pattern.MULTILINE); - filterMatcher = filterPattern.matcher(""); - } catch (final PatternSyntaxException e) { - Log.logException(e); - } - - - int level = 0; - int lc = 0; - for (final String logLine : log) { - final String nextLogLine = logLine.trim(); - - if (filterMatcher != null) { - filterMatcher.reset(nextLogLine); - if (!filterMatcher.find()) continue; - } - - if (nextLogLine.startsWith("E ")) { - level = 4; - } else if (nextLogLine.startsWith("W ")) { - level = 3; - } else if (nextLogLine.startsWith("S ")) { - level = 2; - } else if (nextLogLine.startsWith("I ")) { - level = 1; - } else if (nextLogLine.startsWith("D ")) { - level = 0; - } - - prop.put("log_" + lc + "_level", level); - - if (json) { - prop.putJSON("log_" + lc + "_line", nextLogLine); - } else { - prop.put("log_" + lc + "_line", nextLogLine); - } - - lc++; - } - prop.put("log", lc); - - // return rewrite properties - return prop; - } -} +//ViewLog_p.java +//----------------------- +//part of the AnomicHTTPD caching proxy +//(C) by Michael Peter Christen; mc@yacy.net +//first published on http://www.anomic.de +//Frankfurt, Germany, 2004 +// +//This File is contributed by Alexander Schier +//last major change: 14.12.2004 +// +//This program is free software; you can redistribute it and/or modify +//it under the terms of the GNU General Public License as published by +//the Free Software Foundation; either version 2 of the License, or +//(at your option) any later version. +// +//This program is distributed in the hope that it will be useful, +//but WITHOUT ANY WARRANTY; without even the implied warranty of +//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//GNU General Public License for more details. +// +//You should have received a copy of the GNU General Public License +//along with this program; if not, write to the Free Software +//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +//You must compile this file with +//javac -classpath .:../classes ViewLog_p.java +//if the shell's current path is HTROOT + +import java.util.logging.Handler; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +import net.yacy.cora.protocol.RequestHeader; +import net.yacy.kelondro.logging.GuiHandler; +import net.yacy.kelondro.logging.Log; +import net.yacy.kelondro.logging.LogalizerHandler; + +import de.anomic.server.serverObjects; +import de.anomic.server.serverSwitch; + +public class ViewLog_p { + + public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) { + final serverObjects prop = new serverObjects(); + String[] log = new String[0]; + boolean reversed = false; + boolean json = false; + int maxlines = 400, lines = 200; + String filter = ".*.*"; + + if(post != null){ + if(post.containsKey("mode") && (post.get("mode")).equals("reversed")){ + reversed=true; + } + if(post.containsKey("lines")){ + lines = Integer.parseInt(post.get("lines")); + } + if(post.containsKey("filter")){ + filter = post.get("filter"); + } + if(post.containsKey("json")){ + json = true; + } + } + + + final Logger logger = Logger.getLogger(""); + final Handler[] handlers = logger.getHandlers(); + boolean displaySubmenu = false; + for (int i=0; i maxlines) lines = maxlines; + log = ((GuiHandler)handlers[i]).getLogLines(reversed,lines); + } else if (handlers[i] instanceof LogalizerHandler) { + displaySubmenu = true; + } + } + + prop.put("submenu", displaySubmenu ? "1" : "0"); + prop.put("reverseChecked", reversed ? "1" : "0"); + prop.put("lines", lines); + prop.put("maxlines",maxlines); + prop.putHTML("filter", filter); + + // trying to compile the regular expression filter expression + Matcher filterMatcher = null; + try { + final Pattern filterPattern = Pattern.compile(filter,Pattern.MULTILINE); + filterMatcher = filterPattern.matcher(""); + } catch (final PatternSyntaxException e) { + Log.logException(e); + } + + + int level = 0; + int lc = 0; + for (int i=0; i < log.length; i++) { + final String nextLogLine = log[i].trim(); + + if (filterMatcher != null) { + filterMatcher.reset(nextLogLine); + if (!filterMatcher.find()) continue; + } + + if (nextLogLine.startsWith("E ")) level = 4; + else if (nextLogLine.startsWith("W ")) level = 3; + else if (nextLogLine.startsWith("S ")) level = 2; + else if (nextLogLine.startsWith("I ")) level = 1; + else if (nextLogLine.startsWith("D ")) level = 0; + prop.put("log_" + lc + "_level", level); + if (json) prop.putJSON("log_" + lc + "_line", nextLogLine); + else prop.put("log_" + lc + "_line", nextLogLine); + lc++; + } + prop.put("log", lc); + + // return rewrite properties + return prop; + } +}