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(-)
----------------------------------------------------------------------