This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
The following commit(s) were added to refs/heads/master by this push:
new 885c7b2 FELIX-6505 : Allow configuration of log format for request
logs
885c7b2 is described below
commit 885c7b2701a6e6cfcdf70f2ad158e11bde2aa912
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Sun Feb 13 11:54:10 2022 +0100
FELIX-6505 : Allow configuration of log format for request logs
---
.../apache/felix/http/jetty/internal/FileRequestLog.java | 2 +-
.../org/apache/felix/http/jetty/internal/JettyConfig.java | 15 +++++++++++++++
.../felix/http/jetty/internal/LogServiceRequestLog.java | 13 ++++++++-----
3 files changed, 24 insertions(+), 6 deletions(-)
diff --git
a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/FileRequestLog.java
b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/FileRequestLog.java
index fbb4854..21ec142 100644
---
a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/FileRequestLog.java
+++
b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/FileRequestLog.java
@@ -55,7 +55,7 @@ class FileRequestLog {
writer.setRetainDays(config.getRequestLogFileRetainDays());
writer.setFilenameDateFormat(config.getRequestLogFilenameDateFormat());
- delegate = new CustomRequestLog(writer,
CustomRequestLog.EXTENDED_NCSA_FORMAT);
+ delegate = new CustomRequestLog(writer,
config.getRequestLogFileFormat());
delegate.setIgnorePaths(config.getRequestLogFileIgnorePaths());
}
diff --git
a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
index 3588039..543acd4 100644
---
a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
+++
b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
@@ -30,6 +30,7 @@ import java.util.zip.Deflater;
import org.apache.felix.http.base.internal.HttpConfig;
import org.apache.felix.http.base.internal.logger.SystemLogger;
+import org.eclipse.jetty.server.CustomRequestLog;
import org.eclipse.jetty.server.handler.gzip.GzipHandler;
import org.osgi.framework.BundleContext;
@@ -183,6 +184,9 @@ public final class JettyConfig
/** Felix specific property to control the level of the log messages
generated by the OSGi Log Service-based request log. Values must correspond to
the constants defined in the LogService interface, default is 3 "INFO". */
public static final String FELIX_HTTP_REQUEST_LOG_OSGI_LEVEL =
"org.apache.felix.http.requestlog.osgi.level";
+ /** Felix specific property to control the format of the log messages
generated by the OSGi Log Service-based request log. */
+ public static final String FELIX_HTTP_REQUEST_LOG_FORMAT =
"org.apache.felix.http.requestlog.osgi.format";
+
/** Felix specific property to enable request logging to a file and
provide the path to that file. Default is null meaning that the file log is
disabled. */
public static final String FELIX_HTTP_REQUEST_LOG_FILE_PATH =
"org.apache.felix.http.requestlog.file.path";
@@ -204,6 +208,9 @@ public final class JettyConfig
/** Felix specific property to ignore matching paths in the request log
file */
public static final String FELIX_HTTP_REQUEST_LOG_FILE_IGNORE_PATHS =
"org.apache.felix.http.requestlog.file.ignorepaths";
+ /** Felix specific property to specify the output format for the request
log file */
+ public static final String FELIX_HTTP_REQUEST_LOG_FILE_FORMAT =
"org.apache.felix.http.requestlog.file.format";
+
/** Felix specific property to define custom properties for the http
runtime service. */
public static final String FELIX_CUSTOM_HTTP_RUNTIME_PROPERTY_PREFIX =
"org.apache.felix.http.runtime.init.";
@@ -583,6 +590,10 @@ public final class JettyConfig
return getIntProperty(FELIX_HTTP_REQUEST_LOG_OSGI_LEVEL, 3); // 3 ==
LogService.LOG_INFO
}
+ public String getRequestLogOSGiFormat() {
+ return getProperty(FELIX_HTTP_REQUEST_LOG_FORMAT,
CustomRequestLog.NCSA_FORMAT);
+ }
+
public String getRequestLogFilePath() {
return getProperty(FELIX_HTTP_REQUEST_LOG_FILE_PATH, null);
}
@@ -603,6 +614,10 @@ public final class JettyConfig
return getIntProperty(FELIX_HTTP_REQUEST_LOG_FILE_RETAIN_DAYS, 31);
}
+ public String getRequestLogFileFormat() {
+ return getProperty(FELIX_HTTP_REQUEST_LOG_FILE_FORMAT,
CustomRequestLog.NCSA_FORMAT);
+ }
+
public String getRequestLogFilenameDateFormat() {
return getProperty(FELIX_HTTP_REQUEST_LOG_FILE_FILENAME_DATE_FORMAT,
null);
}
diff --git
a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/LogServiceRequestLog.java
b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/LogServiceRequestLog.java
index 15078ef..f2bc8a4 100644
---
a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/LogServiceRequestLog.java
+++
b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/LogServiceRequestLog.java
@@ -21,6 +21,7 @@ import java.util.Dictionary;
import java.util.Hashtable;
import org.apache.felix.http.base.internal.logger.SystemLogger;
+import org.apache.felix.http.base.internal.util.ServiceUtils;
import org.eclipse.jetty.server.CustomRequestLog;
import org.eclipse.jetty.server.RequestLog;
import org.osgi.framework.BundleContext;
@@ -46,7 +47,7 @@ class LogServiceRequestLog extends CustomRequestLog {
public void write(String requestEntry) throws IOException {
SystemLogger.info(PREFIX.concat(requestEntry));
}
- }, CustomRequestLog.NCSA_FORMAT);
+ },config.getRequestLogOSGiFormat());
this.serviceName = config.getRequestLogOSGiServiceName();
}
@@ -60,12 +61,14 @@ class LogServiceRequestLog extends CustomRequestLog {
}
public synchronized void unregister() {
- try {
- if (registration != null) {
+ if (registration != null) {
+ try {
registration.unregister();
+ } catch ( final IllegalStateException ignore ) {
+ // ignore
+ } finally {
+ registration = null;
}
- } finally {
- registration = null;
}
}
}