Changeset 2755
- Timestamp:
- 03/27/13 15:21:43 (11 years ago)
- Location:
- ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/frontend
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/frontend/ViewLogPage.html
r633 r2755 10 10 <a wicket:id="home">AdminHome</a> 11 11 </div> 12 <p> 13 <span wicket:id="logLabel">Showing final X bytes (or less) of total N in componentregistry.log:</span><br /> 14 [<a wicket:id="logDownloadLink">Download entire log file</a>] 15 </p> 12 16 <textarea cols="150" rows="50" wicket:id="logText" >log text</textarea> 13 17 </body> -
ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/frontend/ViewLogPage.java
r625 r2755 1 /*2 * To change this template, choose Tools | Templates3 * and open the template in the editor.4 */5 1 package clarin.cmdi.componentregistry.frontend; 6 2 7 3 import java.io.File; 4 import java.io.FileNotFoundException; 8 5 import java.io.IOException; 9 import org.apache.commons.io.FileUtils; 6 import java.io.RandomAccessFile; 7 import java.text.NumberFormat; 10 8 import org.apache.log4j.FileAppender; 11 9 import org.apache.log4j.Logger; 12 10 import org.apache.wicket.PageParameters; 11 import org.apache.wicket.markup.html.basic.Label; 13 12 import org.apache.wicket.markup.html.form.TextArea; 13 import org.apache.wicket.markup.html.link.DownloadLink; 14 14 import org.apache.wicket.markup.html.link.Link; 15 15 import org.apache.wicket.model.Model; … … 17 17 /** 18 18 * 19 * @author Twan Goosen <twan.goosen@mpi.nl> 19 20 * @author paucas 20 21 */ 21 22 public class ViewLogPage extends SecureAdminWebPage { 22 23 23 public ViewLogPage(final PageParameters pageParameters) throws IOException { 24 super(pageParameters); 25 addLinks(); 26 27 File file = getLogFile(); 28 String content = FileUtils.readFileToString(file, "UTF-8"); 29 add(new TextArea("logText", new Model(content))); 24 public ViewLogPage(final PageParameters pageParameters) { 25 super(pageParameters); 26 addLinks(); 27 addLogFileContent(); 30 28 } 31 29 32 30 private void addLinks() { 33 add(new Link("home") { 31 add(new Link("home") { 32 @Override 33 public void onClick() { 34 setResponsePage(AdminHomePage.class); 35 } 36 }); 37 } 34 38 35 @Override 36 public void onClick() { 37 setResponsePage(AdminHomePage.class); 38 } 39 }); 39 private void addLogFileContent() { 40 final int tailSize = 1000000; // Megabyte 41 42 final NumberFormat numberFormat = NumberFormat.getIntegerInstance(); 43 numberFormat.setGroupingUsed(true); 44 45 final File logFile = getLogFile(); 46 if (logFile != null) { 47 try { 48 final RandomAccessFile raLogFile = geFileTail(logFile, tailSize); 49 final String content = getLogFileContent(raLogFile); 50 51 add(new Label("logLabel", String.format("Showing final %s bytes (or less) of total %s in %s:", numberFormat.format(tailSize), numberFormat.format(raLogFile.length()), logFile))); 52 add(new TextArea("logText", new Model(content))); 53 54 add(new DownloadLink("logDownloadLink", logFile)); 55 } catch (IOException ioEx) { 56 add(new Label("logLabel", "Could not read from log file. See error message below.")); 57 add(new TextArea("logText", new Model(ioEx.getMessage()))); 58 } 59 } 60 } 61 62 private String getLogFileContent(final RandomAccessFile randomAccessFile) throws IOException { 63 String currentLine; 64 StringBuilder contentBuilder = new StringBuilder(); 65 while ((currentLine = randomAccessFile.readLine()) != null) { 66 contentBuilder.append(currentLine).append("\n"); 67 } 68 String content = contentBuilder.toString(); 69 return content; 70 } 71 72 private RandomAccessFile geFileTail(File logFile, int tailLength) throws IOException, FileNotFoundException { 73 // Skip to tail of file 74 final RandomAccessFile raLogFile = new RandomAccessFile(logFile, "r"); 75 final long startPosition = raLogFile.length() - tailLength; 76 if (startPosition > 0) { 77 raLogFile.seek(startPosition); 78 // Read until end of line so we don't end up halfway some random line 79 raLogFile.readLine(); 80 } 81 return raLogFile; 40 82 } 41 83 42 84 private File getLogFile() { 43 FileAppender appender = (FileAppender) Logger.getRootLogger().getAppender("ROOT"); 44 File logFile = new File(appender.getFile()); 45 return logFile; 85 // Get file from appender 86 final FileAppender appender = (FileAppender) Logger.getRootLogger().getAppender("ROOT"); 87 if (appender != null) { 88 return new File(appender.getFile()); 89 } 90 return null; 46 91 } 47 92 }
Note: See TracChangeset
for help on using the changeset viewer.