瀏覽代碼

fix #1421 support .log.gz files

Shinsuke Sugaya 7 年之前
父節點
當前提交
7f1defa8f5

+ 6 - 2
src/main/java/org/codelibs/fess/app/web/admin/log/AdminLogAction.java

@@ -62,7 +62,7 @@ public class AdminLogAction extends FessAdminAction {
     public ActionResponse download(final String id) {
         final String filename = new String(Base64.getDecoder().decode(id), StandardCharsets.UTF_8).replace("..", "").replaceAll("\\s", "");
         final String logFilePath = systemHelper.getLogFilePath();
-        if (StringUtil.isNotBlank(logFilePath)) {
+        if (StringUtil.isNotBlank(logFilePath) && isLogFilename(filename)) {
             final Path path = Paths.get(logFilePath, filename);
             return asStream(filename).contentTypeOctetStream().stream(out -> {
                 try (InputStream in = Files.newInputStream(path)) {
@@ -83,7 +83,7 @@ public class AdminLogAction extends FessAdminAction {
         if (StringUtil.isNotBlank(logFilePath)) {
             final Path logDirPath = Paths.get(logFilePath);
             try (Stream<Path> stream = Files.list(logDirPath)) {
-                stream.filter(entry -> entry.getFileName().toString().endsWith(".log")).forEach(filePath -> {
+                stream.filter(entry -> isLogFilename(entry.getFileName().toString())).forEach(filePath -> {
                     final Map<String, Object> map = new HashMap<>();
                     final String name = filePath.getFileName().toString();
                     map.put("id", Base64.getUrlEncoder().encodeToString(name.getBytes(StandardCharsets.UTF_8)));
@@ -102,6 +102,10 @@ public class AdminLogAction extends FessAdminAction {
         return logFileItems;
     }
 
+    public static boolean isLogFilename(final String name) {
+        return name.endsWith(".log") || name.endsWith(".log.gz");
+    }
+
     private HtmlResponse asIndexHtml() {
         return asHtml(path_AdminLog_AdminLogJsp).renderWith(data -> {
             RenderDataUtil.register(data, "logFileItems", getLogFileItems());

+ 2 - 1
src/main/java/org/codelibs/fess/app/web/api/admin/log/ApiAdminLogAction.java

@@ -16,6 +16,7 @@
 package org.codelibs.fess.app.web.api.admin.log;
 
 import static org.codelibs.fess.app.web.admin.log.AdminLogAction.getLogFileItems;
+import static org.codelibs.fess.app.web.admin.log.AdminLogAction.isLogFilename;
 
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
@@ -54,7 +55,7 @@ public class ApiAdminLogAction extends FessApiAdminAction {
     public StreamResponse get$file(final String id) {
         final String filename = new String(Base64.getDecoder().decode(id), StandardCharsets.UTF_8).replace("..", "").replaceAll("\\s", "");
         final String logFilePath = systemHelper.getLogFilePath();
-        if (StringUtil.isNotBlank(logFilePath)) {
+        if (StringUtil.isNotBlank(logFilePath) && isLogFilename(filename)) {
             final Path path = Paths.get(logFilePath, filename);
             return asStream(filename).contentTypeOctetStream().stream(out -> {
                 try (InputStream in = Files.newInputStream(path)) {

+ 2 - 2
src/main/resources/log4j2.xml

@@ -29,7 +29,7 @@
 			</Routes>
 		</Routing>
 		<RollingFile name="AppFile" fileName="${log.file.basedir}/${domain.name}.log"
-			filePattern="${log.file.basedir}/backup/${domain.name}${backup.date.suffix}-%i.log.gz">
+			filePattern="${log.file.basedir}/${domain.name}${backup.date.suffix}-%i.log.gz">
 			<PatternLayout>
 				<Pattern>${log.pattern}</Pattern>
 			</PatternLayout>
@@ -41,7 +41,7 @@
 				max="${backup.max.history}" compressionLevel="9" />
 		</RollingFile>
 		<RollingFile name="AuditFile" fileName="${log.file.basedir}/audit.log"
-			filePattern="${log.file.basedir}/backup/audit${backup.date.suffix}-%i.log.gz">
+			filePattern="${log.file.basedir}/audit${backup.date.suffix}-%i.log.gz">
 			<PatternLayout>
 				<Pattern>${audit.log.pattern}</Pattern>
 			</PatternLayout>