1 17 18 package org.apache.geronimo.console.logmanager; 19 20 import java.io.IOException ; 21 import java.io.Serializable ; 22 import java.io.File ; 23 24 import javax.portlet.PortletConfig; 25 import javax.portlet.PortletContext; 26 import javax.portlet.PortletException; 27 import javax.portlet.PortletRequestDispatcher; 28 import javax.portlet.RenderRequest; 29 import javax.portlet.RenderResponse; 30 import javax.portlet.WindowState; 31 import javax.portlet.PortletSession; 32 33 import org.apache.geronimo.console.BasePortlet; 34 import org.apache.geronimo.console.util.PortletManager; 35 import org.apache.geronimo.system.logging.SystemLog; 36 37 public class LogViewerPortlet extends BasePortlet { 38 private final static String CRITERIA_KEY = "org.apache.geronimo.console.log.CRITERIA"; 39 40 protected PortletRequestDispatcher searchView; 41 42 protected PortletRequestDispatcher helpView; 43 44 protected void doHelp(RenderRequest renderRequest, 45 RenderResponse renderRespose) throws PortletException, IOException { 46 helpView.include(renderRequest, renderRespose); 47 } 48 49 protected void doView(RenderRequest renderRequest, 50 RenderResponse renderRespose) throws PortletException, IOException { 51 if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) { 52 return; 53 } 54 String action = renderRequest.getParameter("action"); 55 56 SystemLog log = PortletManager.getCurrentSystemLog(renderRequest); 57 String [] logFiles = log.getLogFileNames(); 58 LogFile[] files = new LogFile[logFiles.length]; 59 for (int i = 0; i < files.length; i++) { 60 files[i] = new LogFile(logFiles[i]); 61 } 62 Criteria criteria; 63 if ("refresh".equals(action)) { 64 criteria = (Criteria) renderRequest.getPortletSession(true).getAttribute(CRITERIA_KEY, PortletSession.PORTLET_SCOPE); 65 } else { 66 String startPos = renderRequest.getParameter("startPos"); 67 String endPos = renderRequest.getParameter("endPos"); 68 String maxRows = renderRequest.getParameter("maxRows"); 69 String logLevel = renderRequest.getParameter("logLevel"); 70 String searchString = renderRequest.getParameter("searchString"); 71 String stackTraces = renderRequest.getParameter("stackTraces"); 72 String logFile = renderRequest.getParameter("logFile"); 73 if(logFile == null || logFile.equals("")) { 74 logFile = logFiles[0]; 75 } 76 if(logLevel == null || logLevel.equals("")) { 77 logLevel = "WARN"; 78 } 79 if(maxRows == null || maxRows.equals("")) { 80 maxRows = "10"; 81 } 82 criteria = new Criteria(); 83 criteria.max = Integer.parseInt(maxRows); 84 criteria.start = startPos == null || startPos.equals("") ? null : new Integer (startPos); 85 criteria.stop = endPos == null || endPos.equals("") ? null : new Integer (endPos); 86 criteria.logFile = logFile; 87 criteria.stackTraces = stackTraces != null && !stackTraces.equals(""); 88 criteria.level = logLevel; 89 criteria.text = searchString == null || searchString.equals("") ? null : searchString; 90 renderRequest.getPortletSession(true).setAttribute(CRITERIA_KEY, criteria, PortletSession.PORTLET_SCOPE); 91 } 92 93 SystemLog.SearchResults results = log.getMatchingItems(criteria.logFile, criteria.start, criteria.stop, 94 criteria.level, criteria.text, criteria.max, criteria.stackTraces); 95 renderRequest.setAttribute("searchResults", results.getResults()); 96 renderRequest.setAttribute("lineCount", new Integer (results.getLineCount())); 97 renderRequest.setAttribute("startPos", criteria.start); 98 renderRequest.setAttribute("endPos", criteria.stop); 99 renderRequest.setAttribute("logLevel", criteria.level); 100 renderRequest.setAttribute("searchString", criteria.text); 101 renderRequest.setAttribute("maxRows", Integer.toString(criteria.max)); 102 renderRequest.setAttribute("logFile", criteria.logFile); 103 renderRequest.setAttribute("logFiles", files); 104 if(criteria.stackTraces) { 105 renderRequest.setAttribute("stackTraces", Boolean.TRUE); 106 } 107 if(results.isCapped()) { 108 renderRequest.setAttribute("capped", Boolean.TRUE); 109 } 110 111 searchView.include(renderRequest, renderRespose); 112 } 113 114 public void init(PortletConfig portletConfig) throws PortletException { 115 PortletContext pc = portletConfig.getPortletContext(); 116 searchView = pc 117 .getRequestDispatcher("/WEB-INF/view/logmanager/search.jsp"); 118 helpView = pc 119 .getRequestDispatcher("/WEB-INF/view/logmanager/viewhelp.jsp"); 120 super.init(portletConfig); 121 } 122 123 private static class Criteria implements Serializable { 124 int max; 125 Integer start; 126 Integer stop; 127 String text; 128 String level; 129 String logFile; 130 boolean stackTraces; 131 } 132 133 public static class LogFile { 134 private String fullName; 135 private String name; 136 137 public LogFile(String fullName) { 138 this.fullName = fullName; 139 int pos = fullName.lastIndexOf(File.separatorChar); 141 if(pos > -1) { 142 name = fullName.substring(pos+1); 143 } else { 144 name = fullName; 145 } 146 } 147 148 public String getFullName() { 149 return fullName; 150 } 151 152 public String getName() { 153 return name; 154 } 155 } 156 } | Popular Tags |