[Cleaned up logging, changed some log levels and added logging for the linearize package. bringert@cs.chalmers.se**20050315185004] { hunk ./README 49 -PROBLEMS: - -- the OAA interface is case-insensitive - hunk ./doc/gf-java.html 131 +

Logging

+ +

The Embedded GF Interpreter uses the +Java +Logging API to handle log messages. The following logging +namespaces are used:

+ + + +

By default, little information is logged. To change the log level +or other logging parameters, you can use the normal Logging API +mechanisms. For example, to print FINE level message for the +parse package and inearize packages to the standard +error stream, create a file called logging.properties in the +current directory: + +

+# Log to System.err:
+handlers=java.util.logging.ConsoleHandler
+
+# Set the log level of the log handler to FINEST
+java.util.logging.ConsoleHandler.level=FINEST
+# Use our log formatter, which just prints the log messages
+java.util.logging.ConsoleHandler.formatter=se.chalmers.cs.gf.util.SimplestLogFormatter
+
+# Set global logging level
+.level=INFO
+
+# Set log levels for our packages
+se.chalmers.cs.gf.parse.level=FINE
+se.chalmers.cs.gf.linearize.level=FINE
+
+ +

Then instruct the logging API to use the properties from this file, +for example:

+ +
+$ java -Djava.util.logging.config.file=logging.properties -jar translate-numerals.jar
+
+ hunk ./doc/gf-java.html 200 - - -

Known issues

- - hunk ./se/chalmers/cs/gf/linearize/LinearizeAll.java 7 +import static se.chalmers.cs.gf.linearize.LinearizeLogger.*; hunk ./se/chalmers/cs/gf/linearize/LinearizeAll.java 59 - System.err.println("Linearizing to " + lang); + log.fine("Linearizing to " + lang); addfile ./se/chalmers/cs/gf/linearize/LinearizeLogger.java hunk ./se/chalmers/cs/gf/linearize/LinearizeLogger.java 1 +package se.chalmers.cs.gf.linearize; + +import se.chalmers.cs.gf.util.GFLogger; +import java.util.logging.*; + +/** + * Handles logging for the linearize package. + */ +public class LinearizeLogger { + + public static GFLogger log = new GFLogger("se.chalmers.cs.gf.linearize"); + + private LinearizeLogger() {} + +} hunk ./se/chalmers/cs/gf/linearize/gfvalue/Record.java 22 - throw new GFException("Field " + v + " does not exit in " + this); + throw new GFException("Field " + v + " does not exist in " + this); hunk ./se/chalmers/cs/gf/parse/ParseAll.java 55 - finer("Trying to parse '" + str + "' with all languages"); + log.fine("Trying to parse '" + str + "' with all languages"); hunk ./se/chalmers/cs/gf/parse/ParseAll.java 63 - finer("Trying " + l); + log.finer("Trying " + l); hunk ./se/chalmers/cs/gf/parse/ParseAll.java 65 - finer(l + ": " + t); + log.fine(l + ": " + t); hunk ./se/chalmers/cs/gf/parse/ParseAll.java 69 - error(ex); + log.error(ex); hunk ./se/chalmers/cs/gf/parse/ParseLogger.java 3 +import se.chalmers.cs.gf.util.GFLogger; hunk ./se/chalmers/cs/gf/parse/ParseLogger.java 11 - private static Logger logger = Logger.getLogger("se.chalmers.cs.gf.parse"); + public static GFLogger log = new GFLogger("se.chalmers.cs.gf.parse"); hunk ./se/chalmers/cs/gf/parse/ParseLogger.java 14 - - public static void fine(String s) { - log(Level.FINE, s); - } - - public static void finer(String s) { - log(Level.FINER, s); - } - - public static void finest(String s) { - log(Level.FINEST, s); - } - - public static void error(Throwable t) { - LogRecord r = new LogRecord(Level.SEVERE, "Throw"); - r.setThrown(t); - logger.log(r); - } - - private static void log(Level l, String s) { - logger.log(l, s); - } hunk ./se/chalmers/cs/gf/parse/chart/ChartParser.java 24 - fine("Created chart parser for " + grammar.getName()); + log.fine("Created chart parser for " + grammar.getName()); hunk ./se/chalmers/cs/gf/parse/chart/ChartParser.java 36 - fine("Parsing \"" + str + "\" as " + cat + "."); + log.finer("Parsing \"" + str + "\" as " + cat + "."); hunk ./se/chalmers/cs/gf/parse/chart/ChartParser.java 41 - fine("Tokens: " + tokens); - hunk ./se/chalmers/cs/gf/parse/chart/ChartParser.java 43 - fine("Finished parsing."); + log.finest("Finished parsing."); hunk ./se/chalmers/cs/gf/parse/chart/ChartParser.java 45 - finest(chartInfo(chart)); + log.finest(chartInfo(chart)); hunk ./se/chalmers/cs/gf/parse/chart/ChartParser.java 47 - fine("Building trees."); + log.finest("Building trees."); hunk ./se/chalmers/cs/gf/parse/chart/ChartParser.java 51 - fine("Built " + trees.size() + " trees"); + log.finer("Built " + trees.size() + " trees"); hunk ./se/chalmers/cs/gf/parse/chart/Lexer.java 6 +import static se.chalmers.cs.gf.parse.ParseLogger.*; + hunk ./se/chalmers/cs/gf/parse/chart/Lexer.java 41 + + log.finest("Lexed \"" + input + "\" to " + ts); addfile ./se/chalmers/cs/gf/util/GFLogger.java hunk ./se/chalmers/cs/gf/util/GFLogger.java 1 +package se.chalmers.cs.gf.util; + +import java.util.logging.*; + +/** + * General logging class. + */ +public class GFLogger { + + private Logger logger; + + public GFLogger(String packageName) { + this.logger = Logger.getLogger(packageName); + } + + public void fine(String s) { + log(Level.FINE, s); + } + + public void finer(String s) { + log(Level.FINER, s); + } + + public void finest(String s) { + log(Level.FINEST, s); + } + + public void error(Throwable t) { + LogRecord r = new LogRecord(Level.SEVERE, "Throw"); + r.setThrown(t); + logger.log(r); + } + + private void log(Level l, String s) { + logger.log(l, s); + } + +} addfile ./se/chalmers/cs/gf/util/SimplestLogFormatter.java hunk ./se/chalmers/cs/gf/util/SimplestLogFormatter.java 1 +package se.chalmers.cs.gf.util; + +import java.util.logging.*; + +/** + * A log record formatter which just returns the log message. + */ +public class SimplestLogFormatter extends Formatter { + + public SimplestLogFormatter() {} + + public String format(LogRecord r) { + return r.getMessage() + "\n"; + } +} }