# 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.decoder.InputHandler.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.chart_parser.Cell.level=INFO
joshua.decoder.hypergraph.HGNode.level=INFO
joshua.decoder.hypergraph.KBestExtractor.level=INFO
joshua.decoder.Decoder.level=INFO
joshua.decoder.ff.FeatureFunction.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.hash_based.MemoryBasedBatchGrammar.level=INFO
joshua.decoder.ff.tm.TMGrammar_Memory.level=INFO
joshua.lattice.Lattice.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
