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 2012/02/16 17:51:35 UTC

svn commit: r1245074 - in /incubator/jena/Jena2/ARQ/trunk/src/main/java: arq/cmdline/CmdGeneral.java org/openjena/atlas/logging/Log.java

Author: andy
Date: Thu Feb 16 16:51:35 2012
New Revision: 1245074

URL: http://svn.apache.org/viewvc?rev=1245074&view=rev
Log:
Logging for commands.

Modified:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/arq/cmdline/CmdGeneral.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/org/openjena/atlas/logging/Log.java

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/arq/cmdline/CmdGeneral.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/arq/cmdline/CmdGeneral.java?rev=1245074&r1=1245073&r2=1245074&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/arq/cmdline/CmdGeneral.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/arq/cmdline/CmdGeneral.java Thu Feb 16 16:51:35 2012
@@ -43,6 +43,7 @@ public abstract class CmdGeneral extends
     protected CmdGeneral(String[] argv)
     {
         super(argv) ;
+        Log.setLoggingCmd() ;
         addModule(modGeneral) ;
         addModule(modVersion) ;
     }

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/org/openjena/atlas/logging/Log.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/org/openjena/atlas/logging/Log.java?rev=1245074&r1=1245073&r2=1245074&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/org/openjena/atlas/logging/Log.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/org/openjena/atlas/logging/Log.java Thu Feb 16 16:51:35 2012
@@ -21,12 +21,15 @@ package org.openjena.atlas.logging;
 import java.io.ByteArrayInputStream ;
 import java.io.File ;
 import java.io.FileInputStream ;
+import java.io.IOException ;
 import java.io.InputStream ;
+import java.util.Properties ;
 
 import org.apache.log4j.PropertyConfigurator ;
 import org.apache.log4j.xml.DOMConfigurator ;
 import org.openjena.atlas.AtlasException ;
 import org.openjena.atlas.lib.StrUtils ;
+import org.openjena.riot.SysRIOT ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
@@ -295,7 +298,14 @@ public class Log
         java.util.logging.Logger.getLogger(logger.getName()).setLevel(java.util.logging.Level.INFO) ;
     }
     
-    /** Set log4j - try to find a file "log4j.properties" if nothing already set.  Return true if we think Log4J is not initialized. */
+    /** Set logging
+     * <ol>
+     * <li>Check for -Dlog4j.configuration.</li>
+     * <li>Looks for log4j.properties file in current directory.</li>
+     * </ol>
+     * Return true if we think Log4J is not initialized.
+     */
+    
     public static boolean setLog4j()
     {
         if ( System.getProperty("log4j.configuration") == null )
@@ -318,6 +328,46 @@ public class Log
             PropertyConfigurator.configure(filename) ;
     }
     
+    private static final String log4Jsetup = StrUtils.strjoinNL(
+        "## Plain output to stdout"
+        , "log4j.appender.jena.plain=org.apache.log4j.ConsoleAppender"
+        , "log4j.appender.jena.plain.target=System.out"
+        , "log4j.appender.jena.plain.layout=org.apache.log4j.PatternLayout"
+        , "log4j.appender.jena.plain.layout.ConversionPattern=%m%n"
+        
+        , "## Plain output with level, to stderr"
+        , "log4j.appender.jena.plainlevel=org.apache.log4j.ConsoleAppender"
+        , "log4j.appender.jena.plainlevel.target=System.err"
+        , "log4j.appender.jena.plainlevel.layout=org.apache.log4j.PatternLayout"
+        , "log4j.appender.jena.plainlevel.layout.ConversionPattern=%-5p %m%n"
+        
+        , "## Everything"
+        , "log4j.rootLogger=INFO, jena.plainlevel"
+        
+        , "## Parser output"
+        , "log4j.additivity."+SysRIOT.riotLoggerName+"=false"
+        , "log4j.logger."+SysRIOT.riotLoggerName+"=INFO, jena.plainlevel "
+        ) ;
+
+    /** Set logging, suitable for a command line application.
+     * <ol>
+     * <li>Check for -Dlog4j.configuration.</li>
+     * <li>Looks for log4j.properties file in current directory.</li>
+     * <li>Sets log4j using an internal configuration.</li>
+     * </ol>
+     */
+    public static void setLoggingCmd()
+    {
+        if ( !setLog4j() )
+        {
+            Properties p = new Properties() ;
+            InputStream in = new ByteArrayInputStream(StrUtils.asUTF8bytes(log4Jsetup)) ;
+            try { p.load(in) ; } catch (IOException ex) {}
+            PropertyConfigurator.configure(p) ;
+            System.setProperty("log4j.configuration", "set") ;
+        }
+    }
+    
     //---- java.util.logging - because that's always present.
     static String defaultProperties = 
         StrUtils.strjoinNL(