Reimplement to avoid problems with inheriting from ConsoleHandler.
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 fd4dbac..d900b1e 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
@@ -20,8 +20,9 @@
 
 import java.io.OutputStream ;
 import java.nio.charset.StandardCharsets ;
-import java.util.logging.ConsoleHandler ;
-import java.util.logging.LogManager ;
+import java.util.logging.* ;
+
+import org.apache.jena.atlas.logging.java.TextFormatter ;
 
 /** Console handler that modifies {@link java.util.logging.ConsoleHandler}.
  * Supports the configuration parameters of {@link ConsoleHandler} -- {@code .level},
@@ -29,35 +30,88 @@
  * <p>
  * Defaults:
  * <ul>
- * <li>Stdout, rather than stderr</li>
+ * <li>Stdout, rather than stderr, by default.</li>
  * <li>{@link TextFormatter} rather than {@link java.util.logging.SimpleFormatter}</li>
  * <li>UTF-8, rather than platform charset</li>
  * </ul>
+ * Example:
+ * <pre>
+ * handlers=org.apache.jena.atlas.logging.java.ConsoleHandlerStream</pre>
+ * or to configure the formatter as well:
+ * <pre>
+ * handlers=org.apache.jena.atlas.logging.java.ConsoleHandlerStream
+ * org.apache.jena.atlas.logging.java.TextFormatter.format = %5$tT %3$-5s %2$-20s -- %6$s</pre>
  */
-public class ConsoleHandlerStream extends ConsoleHandler {
-
+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.
+    // So System.err is then closed in the app!
+    // 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. 
+    
     public ConsoleHandlerStream() {
         this(System.out) ;
     }
     
     public ConsoleHandlerStream(OutputStream outputStream) {
-        super() ;
+        super(outputStream, new TextFormatter()) ;
+        
         LogManager manager = LogManager.getLogManager();
+        ClassLoader classLoader = ClassLoader.getSystemClassLoader() ;
         String cname = getClass().getName();
-        // Change the formatter default from SimpleFormatter to TextFormatter.
-        String pNameFormatter = cname +".formatter" ;
-        if ( manager.getProperty(pNameFormatter) == null )
-            setFormatter(new TextFormatter()) ;
-        String pNameEncoding = cname +".encoding" ;
-        if ( manager.getProperty(pNameEncoding) == null ) {
-            try { setEncoding(StandardCharsets.UTF_8.name()) ; }
-            catch (Exception e) { 
-                // That should work as it is a required charset. 
-                System.err.print("Failed to set encoding: "+e.getMessage()) ;
-                // Ignore and try to carry on.
+        
+        // -- Level
+        Level level = Level.INFO ;
+        String pLevel = getProperty(manager, cname, "level") ;
+        if ( pLevel != null )
+            level = Level.parse(pLevel) ;
+        setLevel(level);
+        
+        // -- Formatter
+        // The default is TextFormatter above
+        // (we had to pass a Formatter of some kind to super(,)).
+        String pFormatter = getProperty(manager, cname, "formatter") ;
+        if ( pFormatter != null ) {
+            try {
+                Class<?> cls = classLoader.loadClass(pFormatter);
+                setFormatter((Formatter) cls.newInstance());
+            } catch (Exception ex) {
+                System.err.println("Problems setting the logging formatter") ;
+                ex.printStackTrace(System.err);
             }
         }
-        // Temporary fix : setOutputStream closes the old setting which is backed by System.err.  
-        //setOutputStream(outputStream);
+        
+        // -- Filter
+        String pFilter = getProperty(manager, cname, "filter") ;
+        if ( pFilter != null ) {
+            try {
+                Class<?> cls = classLoader.loadClass(pFilter);
+                setFilter((Filter) cls.newInstance());
+            } catch (Exception ex) {
+                System.err.println("Problems setting the logging filter") ;
+                ex.printStackTrace(System.err);
+            }
+        }
+        
+        // -- Encoding : Default UTF-8
+        String pEncoding = getProperty(manager, cname, "encoding") ;
+        if ( pEncoding == null )
+            pEncoding = StandardCharsets.UTF_8.name() ;
+        try { setEncoding(pEncoding) ; }
+        catch (Exception e) { 
+            // That should work for UTF-8 as it is a required charset. 
+            System.err.print("Failed to set encoding: "+e.getMessage()) ;
+        }
+    }
+    
+    private String getProperty(LogManager manager, String cname, String pname) {
+        return manager.getProperty(cname+"."+pname);
+    }
+    
+    @Override
+    public void publish(LogRecord record) {
+        super.publish(record);
+        flush();
     }
 }