提交 d300ff84 编写于 作者: H huybrechts

[HUDSON-2551] support for reading compressed build logs

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@15363 71c3de6d-444a-0410-be80-ed276b4c234a
上级 e59e3939
......@@ -23,17 +23,16 @@
*/
package hudson.model;
import com.thoughtworks.xstream.XStream;
import static hudson.Util.combine;
import hudson.AbortException;
import hudson.BulkChange;
import hudson.CloseProofOutputStream;
import hudson.EnvVars;
import hudson.ExtensionPoint;
import hudson.FeedAdapter;
import hudson.FilePath;
import hudson.Util;
import static hudson.Util.combine;
import hudson.XmlFile;
import hudson.AbortException;
import hudson.BulkChange;
import hudson.matrix.MatrixBuild;
import hudson.matrix.MatrixRun;
import hudson.model.listeners.RunListener;
......@@ -48,26 +47,22 @@ import hudson.tasks.LogRotator;
import hudson.tasks.Mailer;
import hudson.tasks.test.AbstractTestResultAction;
import hudson.util.IOException2;
import hudson.util.XStream2;
import hudson.util.ProcessTreeKiller;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
import org.kohsuke.stapler.framework.io.LargeText;
import hudson.util.XStream2;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
......@@ -85,7 +80,19 @@ import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.nio.charset.Charset;
import java.util.zip.GZIPInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
import org.kohsuke.stapler.framework.io.LargeText;
import com.thoughtworks.xstream.XStream;
/**
* A particular execution of {@link Job}.
......@@ -734,6 +741,28 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
return new File(getRootDir(),"log");
}
/**
* Returns a Reader that reads from the log file.
* It will use a gzip-compressed log file (log.gz) if that exists.
* @throws IOException
* @return a reader from the log file, or null if none exists
*/
public Reader getLogReader() throws IOException {
File logFile = getLogFile();
if (logFile.exists() ) {
return new FileReader(logFile);
}
File compressedLogFile = new File(logFile.getParentFile(), logFile.getName()+ ".gz");
if (compressedLogFile.exists()) {
return new InputStreamReader(
new GZIPInputStream(
new FileInputStream(compressedLogFile)));
}
return null;
}
protected SearchIndexBuilder makeSearchIndex() {
SearchIndexBuilder builder = super.makeSearchIndex()
.add("console")
......
......@@ -48,7 +48,7 @@ THE SOFTWARE.
</j:when>
<!-- output is completed now. -->
<j:otherwise>
<pre><st:copyStream file="${it.logFile}"/></pre>
<pre><st:copyStream reader="${it.getLogReader()}"/></pre>
</j:otherwise>
</j:choose>
</l:main-panel>
......
......@@ -26,4 +26,4 @@ THE SOFTWARE.
Displays the console output as plain/text
-->
<st:compress xmlns:j="jelly:core" xmlns:st="jelly:stapler">
<st:contentType value="text/plain;charset=UTF-8" />${it.log}</st:compress>
\ No newline at end of file
<st:copyStream reader="${it.getLogReader()}"/></st:compress>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册