Author: gates Date: Fri Dec 7 16:41:57 2007 New Revision: 602286 URL: http://svn.apache.org/viewvc?rev=602286&view=rev Log: PIG-12: Added time stamps to log4j messages
Modified: incubator/pig/trunk/CHANGES.txt incubator/pig/trunk/src/org/apache/pig/Main.java incubator/pig/trunk/src/org/apache/pig/impl/PigContext.java Modified: incubator/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/incubator/pig/trunk/CHANGES.txt?rev=602286&r1=602285&r2=602286&view=diff ============================================================================== --- incubator/pig/trunk/CHANGES.txt (original) +++ incubator/pig/trunk/CHANGES.txt Fri Dec 7 16:41:57 2007 @@ -48,3 +48,5 @@ instead of Tuples, causing Reducer to crash in some cases. PIG-47: Added methods to DataMap to provide access to its content + + PIG-12: Added time stamps to log4j messages (phunt via gates). Modified: incubator/pig/trunk/src/org/apache/pig/Main.java URL: http://svn.apache.org/viewvc/incubator/pig/trunk/src/org/apache/pig/Main.java?rev=602286&r1=602285&r2=602286&view=diff ============================================================================== --- incubator/pig/trunk/src/org/apache/pig/Main.java (original) +++ incubator/pig/trunk/src/org/apache/pig/Main.java Fri Dec 7 16:41:57 2007 @@ -25,10 +25,12 @@ import org.apache.hadoop.util.HadoopExe; +import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.apache.log4j.Level; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.PatternLayout; +import org.apache.log4j.PropertyConfigurator; import org.apache.pig.PigServer.ExecType; import org.apache.pig.impl.PigContext; import org.apache.pig.impl.logicalLayer.LogicalPlanBuilder; @@ -64,11 +66,15 @@ int port = 0; String file = null; Level logLevel = Level.INFO; + boolean brief = false; + String log4jconf = null; boolean verbose = false; CmdLineParser opts = new CmdLineParser(args); // Don't use -l, --latest, -c, --cluster, -cp, -classpath, -D as these // are masked by the startup perl script. + opts.registerOpt('4', "log4jconf", CmdLineParser.ValueExpected.REQUIRED); + opts.registerOpt('b', "brief", CmdLineParser.ValueExpected.NOT_ACCEPTED); opts.registerOpt('c', "cluster", CmdLineParser.ValueExpected.REQUIRED); opts.registerOpt('d', "debug", CmdLineParser.ValueExpected.REQUIRED); opts.registerOpt('e', "execute", CmdLineParser.ValueExpected.NOT_ACCEPTED); @@ -82,6 +88,14 @@ char opt; while ((opt = opts.getNextOpt()) != CmdLineParser.EndOfOpts) { switch (opt) { + case '4': + log4jconf = opts.getValStr(); + break; + + case 'b': + brief = true; + break; + case 'c': { // Needed away to specify the cluster to run the MR job on // Bug 831708 - fixed @@ -154,14 +168,35 @@ LogicalPlanBuilder.classloader = pigContext.createCl(null); - // Set the log level, and set up appenders - Logger log = pigContext.getLogger(); - log.setLevel(logLevel); - ConsoleAppender screen = new ConsoleAppender(new PatternLayout()); - if (verbose) screen.setThreshold(logLevel); - else screen.setThreshold(Level.INFO); - screen.setTarget(ConsoleAppender.SYSTEM_ERR); - log.addAppender(screen); + if (log4jconf != null) { + PropertyConfigurator.configure(log4jconf); + } else if (!brief) { + // non-brief logging - timestamps + Properties props = new Properties(); + props.setProperty("log4j.rootLogger", "INFO, PIGCONSOLE"); + props.setProperty("log4j.appender.PIGCONSOLE", + "org.apache.log4j.ConsoleAppender"); + props.setProperty("log4j.appender.PIGCONSOLE.layout", + "org.apache.log4j.PatternLayout"); + props.setProperty("log4j.appender.PIGCONSOLE.layout.ConversionPattern", + "%d [%t] %-5p %c - %m%n"); + PropertyConfigurator.configure(props); + // Set the log level/threshold + Logger.getRootLogger().setLevel(verbose ? Level.ALL : logLevel); + } else { + // brief logging - no timestamps + Properties props = new Properties(); + props.setProperty("log4j.rootLogger", "INFO, PIGCONSOLE"); + props.setProperty("log4j.appender.PIGCONSOLE", + "org.apache.log4j.ConsoleAppender"); + props.setProperty("log4j.appender.PIGCONSOLE.layout", + "org.apache.log4j.PatternLayout"); + props.setProperty("log4j.appender.PIGCONSOLE.layout.ConversionPattern", + "%m%n"); + PropertyConfigurator.configure(props); + // Set the log level/threshold + Logger.getRootLogger().setLevel(verbose ? Level.ALL : logLevel); + } // TODO Add a file appender for the logs // TODO Need to create a property in the properties file for it. @@ -246,6 +281,8 @@ System.err.println(" Pig [options] -e[xecute] cmd [cmd ...] : Run cmd(s)."); System.err.println(" Pig [options] [-f[ile]] file : Run cmds found in file."); System.err.println(" options include:"); + System.err.println(" -4, -log4jconf log4j configuration file, overrides log conf"); + System.err.println(" -b, -brief brief logging (no timestamps)"); System.err.println(" -c, -cluster clustername, kryptonite is default"); System.err.println(" -d, -debug debug level, INFO is default"); System.err.println(" -h, -help display this message"); Modified: incubator/pig/trunk/src/org/apache/pig/impl/PigContext.java URL: http://svn.apache.org/viewvc/incubator/pig/trunk/src/org/apache/pig/impl/PigContext.java?rev=602286&r1=602285&r2=602286&view=diff ============================================================================== --- incubator/pig/trunk/src/org/apache/pig/impl/PigContext.java (original) +++ incubator/pig/trunk/src/org/apache/pig/impl/PigContext.java Fri Dec 7 16:41:57 2007 @@ -111,7 +111,6 @@ this.execType = execType; mLogger = Logger.getLogger("org.apache.pig"); - mLogger.setAdditivity(false); initProperties();