You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/09/25 21:53:48 UTC
[1/2] jena git commit: JENA-1607: Protect stdout,
stderr from being closed
Repository: jena
Updated Branches:
refs/heads/master d6be56fd5 -> 68b1b110e
JENA-1607: Protect stdout, stderr from being closed
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/a1c2d14a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/a1c2d14a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/a1c2d14a
Branch: refs/heads/master
Commit: a1c2d14ab5c14ee3affddc2523f81c40698e92d2
Parents: d6be56f
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 25 09:47:43 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 25 09:48:48 2018 +0100
----------------------------------------------------------------------
.../org/apache/jena/atlas/logging/LogCtl.java | 31 ++++++++++++++++----
.../logging/java/ConsoleHandlerStream.java | 11 +++++--
2 files changed, 35 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/a1c2d14a/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java b/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
index a3aa9b8..3c327fa 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtl.java
@@ -267,6 +267,9 @@ public class LogCtl {
resetLogging(defaultConfig) ;
}
+ /**
+ * Reset logging (log4j).
+ */
public static void resetLogging(String config) {
Properties p = new Properties() ;
InputStream in = new ByteArrayInputStream(StrUtils.asUTF8bytes(config)) ;
@@ -286,9 +289,23 @@ public class LogCtl {
//,"org.apache.jena.atlas.logging.java.ConsoleHandlerStream.formatter=org.apache.jena.atlas.logging.java.TextFormatter"
//,"org.apache.jena.atlas.logging.java.TextFormatter.format=%5$tT %3$-5s %2$-20s :: %6$s"
) ;
- private static String JUL_LOGGING = "logging.properties" ;
+ // File or java resource name default.
+ private static String JUL_LOGGING = "logging.properties";
+ // JUL will close existing logger if logging is reset.
+ // This includes StreamHandler logging to stdout. Stdout is closed.
+ // This property controls setJavaLogging() acting multiple times.
+ private static String JUL_PROPERTY = "java.util.logging.configuration";
+
+ /** Setup java.util.logging if it has not been set before; otherwise do nothing. */
public static void setJavaLogging() {
+ if ( System.getProperty(JUL_PROPERTY) != null )
+ return;
+ resetJavaLogging();
+ }
+
+ /** Reset java.util.logging - this overrided the previous configuration, if any. */
+ public static void resetJavaLogging() {
Path p = Paths.get(JUL_LOGGING) ;
if ( Files.exists(p) ) {
setJavaLogging(JUL_LOGGING) ;
@@ -299,12 +316,17 @@ public class LogCtl {
setJavaLoggingDft();
}
+ private static void readConfiguration(InputStream details) throws Exception {
+ System.setProperty(JUL_PROPERTY, "set");
+ java.util.logging.LogManager.getLogManager().readConfiguration(details) ;
+ }
+
private static boolean setJavaLoggingClasspath(String resourceName) {
// Not "LogCtl.class.getResourceAsStream(resourceName)" which monkeys around with the resourceName.
InputStream in = LogCtl.class.getClassLoader().getResourceAsStream(resourceName);
if ( in != null ) {
try {
- java.util.logging.LogManager.getLogManager().readConfiguration(in) ;
+ readConfiguration(in) ;
return true;
} catch (Exception ex) {
throw new AtlasException(ex) ;
@@ -317,7 +339,7 @@ public class LogCtl {
try {
InputStream details = new FileInputStream(file) ;
details = new BufferedInputStream(details) ;
- java.util.logging.LogManager.getLogManager().readConfiguration(details) ;
+ readConfiguration(details) ;
} catch (Exception ex) {
throw new AtlasException(ex) ;
}
@@ -326,8 +348,7 @@ public class LogCtl {
public static void setJavaLoggingDft() {
try {
InputStream details = new ByteArrayInputStream(defaultProperties.getBytes("UTF-8")) ;
- java.util.logging.LogManager.getLogManager().readConfiguration(details) ;
-
+ readConfiguration(details) ;
} catch (Exception ex) {
throw new AtlasException(ex) ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/a1c2d14a/jena-base/src/main/java/org/apache/jena/atlas/logging/java/ConsoleHandlerStream.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/logging/java/ConsoleHandlerStream.java b/jena-base/src/main/java/org/apache/jena/atlas/logging/java/ConsoleHandlerStream.java
index 6eaf63a..13a131b 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/logging/java/ConsoleHandlerStream.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/logging/java/ConsoleHandlerStream.java
@@ -22,7 +22,7 @@ import java.io.OutputStream ;
import java.nio.charset.StandardCharsets ;
import java.util.logging.* ;
-import org.apache.jena.atlas.logging.java.TextFormatter ;
+import org.apache.commons.io.output.CloseShieldOutputStream;
/** Console handler that modifies {@link java.util.logging.ConsoleHandler}.
* Supports the configuration parameters of {@link ConsoleHandler} -- {@code .level},
@@ -43,6 +43,7 @@ import org.apache.jena.atlas.logging.java.TextFormatter ;
* org.apache.jena.atlas.logging.java.TextFormatter.format = %5$tT %3$-5s %2$-20s -- %6$s</pre>
*/
public class ConsoleHandlerStream extends StreamHandler {
+
// We can't use ConsoleHandler.
// The setOutputStream() operation closes the previous stream but when the only
// constructor ConsoleHandler() runs, it sets output to System.err.
@@ -50,12 +51,18 @@ public class ConsoleHandlerStream extends StreamHandler {
// We need to chose the output in the constructor and ConsoleHandler does not allow that,
// hence going straight to StreamHandler and having to provide the functionality here.
+ private static OutputStream protectStdOutput(OutputStream outputStream) {
+ if ( outputStream == System.err || outputStream == System.out )
+ return new CloseShieldOutputStream(outputStream);
+ return outputStream;
+ }
+
public ConsoleHandlerStream() {
this(System.out) ;
}
public ConsoleHandlerStream(OutputStream outputStream) {
- super(outputStream, new TextFormatter()) ;
+ super(protectStdOutput(outputStream), new TextFormatter()) ;
LogManager manager = LogManager.getLogManager();
ClassLoader classLoader = ClassLoader.getSystemClassLoader() ;
[2/2] jena git commit: JENA-1607: Merge commit 'refs/pull/472/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1607: Merge commit 'refs/pull/472/head' of https://github.com/apache/jena
This closes #472.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/68b1b110
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/68b1b110
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/68b1b110
Branch: refs/heads/master
Commit: 68b1b110e3d907cf898040e89a63da8fc2b6931b
Parents: d6be56f a1c2d14
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Sep 25 22:53:19 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Sep 25 22:53:19 2018 +0100
----------------------------------------------------------------------
.../org/apache/jena/atlas/logging/LogCtl.java | 31 ++++++++++++++++----
.../logging/java/ConsoleHandlerStream.java | 11 +++++--
2 files changed, 35 insertions(+), 7 deletions(-)
----------------------------------------------------------------------