|  | <!DOCTYPE html> | 
|  | <html lang="en"> | 
|  | <head> | 
|  | <meta charset="utf-8"> | 
|  | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | 
|  | <meta name="generator" content="rustdoc"> | 
|  | <meta name="description" content="API documentation for the Rust `env_logger` crate."> | 
|  | <meta name="keywords" content="rust, rustlang, rust-lang, env_logger"> | 
|  |  | 
|  | <title>env_logger - Rust</title> | 
|  |  | 
|  | <link rel="stylesheet" type="text/css" href="../normalize.css"> | 
|  | <link rel="stylesheet" type="text/css" href="../rustdoc.css"> | 
|  | <link rel="stylesheet" type="text/css" href="../main.css"> | 
|  |  | 
|  |  | 
|  | <link rel="shortcut icon" href="http://www.rust-lang.org/favicon.ico"> | 
|  |  | 
|  | </head> | 
|  | <body class="rustdoc mod"> | 
|  | <!--[if lte IE 8]> | 
|  | <div class="warning"> | 
|  | This old browser is unsupported and will most likely display funky | 
|  | things. | 
|  | </div> | 
|  | <![endif]--> | 
|  |  | 
|  |  | 
|  |  | 
|  | <nav class="sidebar"> | 
|  | <a href='../env_logger/index.html'><img src='http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png' alt='logo' width='100'></a> | 
|  | <p class='location'>Crate env_logger</p><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div><p class='location'></p><script>window.sidebarCurrent = {name: 'env_logger', ty: 'mod', relpath: '../'};</script> | 
|  | </nav> | 
|  |  | 
|  | <nav class="sub"> | 
|  | <form class="search-form js-only"> | 
|  | <div class="search-container"> | 
|  | <input class="search-input" name="search" | 
|  | autocomplete="off" | 
|  | placeholder="Click or press ‘S’ to search, ‘?’ for more options…" | 
|  | type="search"> | 
|  | </div> | 
|  | </form> | 
|  | </nav> | 
|  |  | 
|  | <section id='main' class="content"> | 
|  | <h1 class='fqn'><span class='in-band'>Crate <a class="mod" href=''>env_logger</a></span><span class='out-of-band'><span id='render-detail'> | 
|  | <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs"> | 
|  | [<span class='inner'>−</span>] | 
|  | </a> | 
|  | </span><a class='srclink' href='../src/env_logger/lib.rs.html#11-623' title='goto source code'>[src]</a></span></h1> | 
|  | <div class='docblock'><p>A logger configured via an environment variable which writes to standard | 
|  | error.</p> | 
|  |  | 
|  | <h2 id='example' class='section-header'><a href='#example'>Example</a></h2> | 
|  | <pre class="rust rust-example-rendered"> | 
|  | <span class="attribute">#[<span class="ident">macro_use</span>]</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">log</span>; | 
|  | <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">env_logger</span>; | 
|  |  | 
|  | <span class="kw">use</span> <span class="ident">log</span>::<span class="ident">LogLevel</span>; | 
|  |  | 
|  | <span class="kw">fn</span> <span class="ident">main</span>() { | 
|  | <span class="ident">env_logger</span>::<span class="ident">init</span>().<span class="ident">unwrap</span>(); | 
|  |  | 
|  | <span class="macro">debug</span><span class="macro">!</span>(<span class="string">"this is a debug {}"</span>, <span class="string">"message"</span>); | 
|  | <span class="macro">error</span><span class="macro">!</span>(<span class="string">"this is printed by default"</span>); | 
|  |  | 
|  | <span class="kw">if</span> <span class="macro">log_enabled</span><span class="macro">!</span>(<span class="ident">LogLevel</span>::<span class="ident">Info</span>) { | 
|  | <span class="kw">let</span> <span class="ident">x</span> <span class="op">=</span> <span class="number">3</span> <span class="op">*</span> <span class="number">4</span>; <span class="comment">// expensive computation</span> | 
|  | <span class="macro">info</span><span class="macro">!</span>(<span class="string">"the answer was: {}"</span>, <span class="ident">x</span>); | 
|  | } | 
|  | }</pre> | 
|  |  | 
|  | <p>Assumes the binary is <code>main</code>:</p> | 
|  |  | 
|  | <pre><code class="language-{.bash}">$ RUST_LOG=error ./main | 
|  | ERROR:main: this is printed by default | 
|  | </code></pre> | 
|  |  | 
|  | <pre><code class="language-{.bash}">$ RUST_LOG=info ./main | 
|  | ERROR:main: this is printed by default | 
|  | INFO:main: the answer was: 12 | 
|  | </code></pre> | 
|  |  | 
|  | <pre><code class="language-{.bash}">$ RUST_LOG=debug ./main | 
|  | DEBUG:main: this is a debug message | 
|  | ERROR:main: this is printed by default | 
|  | INFO:main: the answer was: 12 | 
|  | </code></pre> | 
|  |  | 
|  | <p>You can also set the log level on a per module basis:</p> | 
|  |  | 
|  | <pre><code class="language-{.bash}">$ RUST_LOG=main=info ./main | 
|  | ERROR:main: this is printed by default | 
|  | INFO:main: the answer was: 12 | 
|  | </code></pre> | 
|  |  | 
|  | <p>And enable all logging:</p> | 
|  |  | 
|  | <pre><code class="language-{.bash}">$ RUST_LOG=main ./main | 
|  | DEBUG:main: this is a debug message | 
|  | ERROR:main: this is printed by default | 
|  | INFO:main: the answer was: 12 | 
|  | </code></pre> | 
|  |  | 
|  | <p>See the documentation for the log crate for more information about its API.</p> | 
|  |  | 
|  | <h2 id='enabling-logging' class='section-header'><a href='#enabling-logging'>Enabling logging</a></h2> | 
|  | <p>Log levels are controlled on a per-module basis, and by default all logging | 
|  | is disabled except for <code>error!</code>. Logging is controlled via the <code>RUST_LOG</code> | 
|  | environment variable. The value of this environment variable is a | 
|  | comma-separated list of logging directives. A logging directive is of the | 
|  | form:</p> | 
|  |  | 
|  | <pre><code class="language-text">path::to::module=log_level | 
|  | </code></pre> | 
|  |  | 
|  | <p>The path to the module is rooted in the name of the crate it was compiled | 
|  | for, so if your program is contained in a file <code>hello.rs</code>, for example, to | 
|  | turn on logging for this file you would use a value of <code>RUST_LOG=hello</code>. | 
|  | Furthermore, this path is a prefix-search, so all modules nested in the | 
|  | specified module will also have logging enabled.</p> | 
|  |  | 
|  | <p>The actual <code>log_level</code> is optional to specify. If omitted, all logging will | 
|  | be enabled. If specified, it must be one of the strings <code>debug</code>, <code>error</code>, | 
|  | <code>info</code>, <code>warn</code>, or <code>trace</code>.</p> | 
|  |  | 
|  | <p>As the log level for a module is optional, the module to enable logging for | 
|  | is also optional. If only a <code>log_level</code> is provided, then the global log | 
|  | level for all modules is set to this value.</p> | 
|  |  | 
|  | <p>Some examples of valid values of <code>RUST_LOG</code> are:</p> | 
|  |  | 
|  | <ul> | 
|  | <li><code>hello</code> turns on all logging for the 'hello' module</li> | 
|  | <li><code>info</code> turns on all info logging</li> | 
|  | <li><code>hello=debug</code> turns on debug logging for 'hello'</li> | 
|  | <li><code>hello,std::option</code> turns on hello, and std's option logging</li> | 
|  | <li><code>error,hello=warn</code> turn on global error logging and also warn for hello</li> | 
|  | </ul> | 
|  |  | 
|  | <h2 id='filtering-results' class='section-header'><a href='#filtering-results'>Filtering results</a></h2> | 
|  | <p>A RUST_LOG directive may include a regex filter. The syntax is to append <code>/</code> | 
|  | followed by a regex. Each message is checked against the regex, and is only | 
|  | logged if it matches. Note that the matching is done after formatting the | 
|  | log string but before adding any logging meta-data. There is a single filter | 
|  | for all modules.</p> | 
|  |  | 
|  | <p>Some examples:</p> | 
|  |  | 
|  | <ul> | 
|  | <li><code>hello/foo</code> turns on all logging for the 'hello' module where the log | 
|  | message includes 'foo'.</li> | 
|  | <li><code>info/f.o</code> turns on all info logging where the log message includes 'foo', | 
|  | 'f1o', 'fao', etc.</li> | 
|  | <li><code>hello=debug/foo*foo</code> turns on debug logging for 'hello' where the log | 
|  | message includes 'foofoo' or 'fofoo' or 'fooooooofoo', etc.</li> | 
|  | <li><code>error,hello=warn/[0-9] scopes</code> turn on global error logging and also | 
|  | warn for hello. In both cases the log message must include a single digit | 
|  | number followed by 'scopes'.</li> | 
|  | </ul> | 
|  | </div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2> | 
|  | <table> | 
|  | <tr class=' module-item'> | 
|  | <td><a class="struct" href="struct.LogBuilder.html" | 
|  | title='struct env_logger::LogBuilder'>LogBuilder</a></td> | 
|  | <td class='docblock-short'> | 
|  | <p>LogBuilder acts as builder for initializing the Logger. | 
|  | It can be used to customize the log format, change the enviromental variable used | 
|  | to provide the logging directives and also set the default log level filter.</p> | 
|  | </td> | 
|  | </tr> | 
|  | <tr class=' module-item'> | 
|  | <td><a class="struct" href="struct.Logger.html" | 
|  | title='struct env_logger::Logger'>Logger</a></td> | 
|  | <td class='docblock-short'> | 
|  | <p>The logger.</p> | 
|  | </td> | 
|  | </tr></table><h2 id='functions' class='section-header'><a href="#functions">Functions</a></h2> | 
|  | <table> | 
|  | <tr class=' module-item'> | 
|  | <td><a class="fn" href="fn.init.html" | 
|  | title='fn env_logger::init'>init</a></td> | 
|  | <td class='docblock-short'> | 
|  | <p>Initializes the global logger with an env logger.</p> | 
|  | </td> | 
|  | </tr></table></section> | 
|  | <section id='search' class="content hidden"></section> | 
|  |  | 
|  | <section class="footer"></section> | 
|  |  | 
|  | <aside id="help" class="hidden"> | 
|  | <div> | 
|  | <h1 class="hidden">Help</h1> | 
|  |  | 
|  | <div class="shortcuts"> | 
|  | <h2>Keyboard Shortcuts</h2> | 
|  |  | 
|  | <dl> | 
|  | <dt>?</dt> | 
|  | <dd>Show this help dialog</dd> | 
|  | <dt>S</dt> | 
|  | <dd>Focus the search field</dd> | 
|  | <dt>⇤</dt> | 
|  | <dd>Move up in search results</dd> | 
|  | <dt>⇥</dt> | 
|  | <dd>Move down in search results</dd> | 
|  | <dt>⏎</dt> | 
|  | <dd>Go to active search result</dd> | 
|  | <dt>+</dt> | 
|  | <dd>Collapse/expand all sections</dd> | 
|  | </dl> | 
|  | </div> | 
|  |  | 
|  | <div class="infos"> | 
|  | <h2>Search Tricks</h2> | 
|  |  | 
|  | <p> | 
|  | Prefix searches with a type followed by a colon (e.g. | 
|  | <code>fn:</code>) to restrict the search to a given type. | 
|  | </p> | 
|  |  | 
|  | <p> | 
|  | Accepted types are: <code>fn</code>, <code>mod</code>, | 
|  | <code>struct</code>, <code>enum</code>, | 
|  | <code>trait</code>, <code>type</code>, <code>macro</code>, | 
|  | and <code>const</code>. | 
|  | </p> | 
|  |  | 
|  | <p> | 
|  | Search functions by type signature (e.g. | 
|  | <code>vec -> usize</code> or <code>* -> vec</code>) | 
|  | </p> | 
|  | </div> | 
|  | </div> | 
|  | </aside> | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | window.rootPath = "../"; | 
|  | window.currentCrate = "env_logger"; | 
|  | </script> | 
|  | <script src="../main.js"></script> | 
|  | <script defer src="../search-index.js"></script> | 
|  | </body> | 
|  | </html> |