blob: 6d2d7ffccfa43f4091a8275e2d06566159e107bc [file] [log] [blame]
{namespace buck.logging}
/***/
{template .soyweb}
{call buck.page}
{param title: 'Logging' /}
{param prettify: true /}
{param description}
How to properly log in Buck code.
{/param}
{param content}
<p>Buck logs debugging information to <code>buck-out/log/buck-0.log</code>. (Older logs are rotated to <code>buck-out/log/buck-1.log</code> etc.)</p>
<p>To add more logs to your code, import <code>com.facebook.buck.log.Logger</code>, create a <code>static</code> instance, and add your logs:</p>
{literal}<pre class="prettyprint lang-java">
import com.facebook.buck.log.Logger;
public class MyClass {
private static final Logger LOG = Logger.get(MyClass.class);
public doStuff(MyData data) {
// Supports String.format() formatters.
LOG.debug("Doing stuff: %s", data);
try {
doSomethingThatThrows();
} catch (IOException e) {
// Logs a stack trace with a message.
LOG.error(e, "Couldn't do stuff!");
throw e;
}
}
}
</pre>
{/literal}
<p>Buck's <code>Logger</code> exposes five log levels:</p>
<table>
<thead><tr><th><code>com.facebook.buck.log.Logger</code></th><th><code>java.util.logging.Level</code> equivalent</th></tr></thead>
<tr><td><code>error()</code></td><td><code>SEVERE</code></td>
<tr><td><code>warn()</code></td><td><code>WARNING</code></td>
<tr><td><code>info()</code></td><td><code>INFO</code></td>
<tr><td><code>debug()</code></td><td><code>FINE</code></td>
<tr><td><code>verbose()</code></td><td><code>FINER</code></td>
</table>
<p>By default, Buck only logs to disk messages at <code>debug()</code> level and higher. Feel free to pepper your code with <code>verbose()</code> logs and even check them in&mdash;they won't have any impact on performance and won't clutter up the logs.</p>
<p>If you want to change the global logging level, edit <code>config/logging.properties</code> (in the buck repo), <code>.bucklogging.properties</code> (in the root of the repo in which you're running <code>buck</code>), or <code>.bucklogging.local.properties</code> (same) and specify a <code>java.util.logging.Level</code> equivalent to the level you want to log (see the table above):</p>
{literal}
<pre>.level=FINER</pre>
{/literal}
<p>You can also control the level of individual loggers, identified by package or class name:</p>
{literal}
<pre>com.facebook.buck.stuff.MyClass.level=FINER</pre>
{/literal}
{/param}
{/call}
{/template}