# Set the log level for all classes to INFO (the least verbose log level)
.level = INFO

# Specify that logging is to go only to the console (and not also to a file)
#handlers=java.util.logging.ConsoleHandler
handlers=java.util.logging.ConsoleHandler java.util.logging.FileHandler

# Logging requires that the class's logger and the handler be turned on.
# These lines set up the handler
#
# Logging can be changed program-wide by changing the handler's level
# INFO is least verbose, FINEST is most verbose
java.util.logging.ConsoleHandler.level=FINEST
java.util.logging.ConsoleHandler.encoding=UTF8
java.util.logging.FileHandler.level=FINEST
java.util.logging.FileHandler.encoding=UTF8


# This line turns off time stamps. If you want time stamps, comment this line out.
java.util.logging.ConsoleHandler.formatter=joshua.util.QuietFormatter
java.util.logging.FileHandler.formatter=joshua.util.QuietFormatter

# If file logging is turned on, what name should the log file have?
java.util.logging.FileHandler.pattern=./joshua.%g.log

# Maximum number of log files to maintain before overwriting
java.util.logging.FileHandler.count=1

# Limiting size of output file in bytes (1 GB == 1073741824 bytes):
java.util.logging.FileHandler.limit=1073741824


# To turn off all logging for a class, set to INFO; to turn all on, set to FINEST
joshua.corpus.lexprob.SampledLexProbs.level=INFO
joshua.corpus.lexprob.LexProbs.level=INFO
joshua.corpus.suffix_array.FrequentMatches.level=INFO
joshua.corpus.suffix_array.FrequentPhrases.level=INFO
joshua.corpus.suffix_array.AbstractSuffixArray.level=INFO
joshua.corpus.suffix_array.SuffixArray.level=INFO
joshua.corpus.vocab.SrilmSymbol.level=INFO
joshua.corpus.vocab.Vocabulary.level=INFO
joshua.decoder.DecoderThread.level=INFO
joshua.decoder.JoshuaDecoder.level=INFO
joshua.decoder.chart_parser.DotChart.level=INFO
joshua.decoder.chart_parser.Chart.level=INFO
joshua.decoder.hypergraph.KBestExtractor.level=INFO
joshua.decoder.Decoder.level=INFO
joshua.decoder.ff.PhraseModelFF.level=INFO
joshua.decoder.ff.lm.ArpaFile.level=INFO
joshua.decoder.ff.lm.DefaultNGramLanguageModel.level=INFO
joshua.decoder.ff.lm.LMGrammar_JAVA.level=INFO
joshua.decoder.ff.lm.buildin_lm.TrieLM.level=INFO
joshua.decoder.ff.tm.AbstractGrammar.level=INFO
joshua.decoder.ff.tm.BilingualRule.level=INFO
joshua.decoder.ff.tm.MonolingualRule.level=INFO
joshua.decoder.ff.tm.TMGrammar_Memory.level=INFO
joshua.lattice.Lattice.level=INFO
joshua.prefix_tree.PrefixTree.level=FINE
joshua.prefix_tree.ExtractRules.level=INFO
joshua.prefix_tree.HierarchicalRuleExtractor.level=INFO
joshua.ui.alignment.GridPanel.level=INFO
joshua.ui.alignment.GridScrollPanelHeader.level=INFO
joshua.ui.alignment.GridViewer.level=INFO
joshua.util.Cache.level=INFO
joshua.util.sentence.alignment.AlignmentGrids.level=INFO

joshua.regression.BleuRegression.level=INFO
