# java.util.logging.LogManager configuration properties for Buck
#
# Also see logging.test.properties, which controls logging in unit tests.
#
# See http://docs.oracle.com/javase/7/docs/api/java/util/logging/LogManager.html
# for docs on the keys and values in this file.

# The log levels in this file come from java.util.logging.Level.
# Here's how they map to com.buck.log.Logger APIs:

# j.u.l   | buck
# ----------------
# SEVERE  | error()
# WARNING | warn()
# INFO    | info()
# FINE    | debug()
# FINER   | verbose()

# The special log level "ALL" means all log messages will
# be logged, and "OFF" means no log messages will be logged.

# Globally ignore and completely drop any log messages under this
# level (before passing them to the console / log files / etc.)
#
# If you want to enable more verbose logging, do it here.
.level=FINE

# Enable the console logging handler and the file handler to
# write rotating log files under buck-out/log/buck-*.log in the
# project(s) being used.
handlers=com.facebook.buck.cli.bootstrapper.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-*log.
java.util.logging.FileHandler.pattern=buck-out/log/buck-%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.cli.bootstrapper.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
