# java.util.logging.LogManager configuration properties for Buck unit tests
#
# Also see logging.properties, used in Buck itself.

.level=FINE

# Enable the console logging handler and the file handler to
# write rotating log files under buck-out/log/buck-test-*.log in the
# project(s) being used.
handlers=com.facebook.buck.log.ConsoleHandler,java.util.logging.FileHandler

# Only print log messages at this level or above to console.
com.facebook.buck.log.ConsoleHandler.level=SEVERE

# Log to buck-out/log/buck-test-*log.
java.util.logging.FileHandler.pattern=buck-out/log/buck-test-%g.log

# Write to disk all log messages not otherwise filtered by the top-level ".level"
# property.
java.util.logging.FileHandler.level=ALL

# Ignore the environment and always write UTF-8 to files.
java.util.logging.FileHandler.encoding=UTF-8

# Replace the default fugly multiline log formatter with a custom one.
java.util.logging.FileHandler.formatter=com.facebook.buck.log.LogFormatter

# Rotate up to this many log files, then start deleting the oldest one.
java.util.logging.FileHandler.count=25

# TODO(t4624433): Temporarily disable logging for Guava's CombinedFuture
# class until we can figure out what's going on.
com.google.common.util.concurrent.level=OFF

# Put any per-package/class logging configuration here.
#
# Note: Log levels are applied in the order they appear in this file,
# so settings for child packages and/or classes must come after
# parents. That means the root logger (".") must be at the top of this file.

# Example: Verbose logging for all classes under com.facebook.buck
# com.facebook.buck.level=FINE

# Example: Disable logging for all classes under com.facebook.buck.rules
# com.facebook.buck.rules.level=OFF
