b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly{{>console-yui-config-css}}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<div class="intro">
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly <p>This example illustrates how to configure your YUI instance to ignore certain log messages to aid in reducing the signal-to-noise ratio when debugging.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly <p>Log messages filtered out from the YUI config are permanently ignored. If you want to be able to temporarily hide and reshow messages, use the <a href="../console-filters/">ConsoleFilters plugin</a>. It is not uncommon to set up `logInclude` or `logExclude` in the YUI configuration and use the ConsoleFilters plugin.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly <p>Log messages can be ignored based on the source (e.g. `event` or `attribute`) or based on their log level (info, warn, error).</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly</div>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
819e90d415ed17d59af3a247b2ad9d6feb0c21b5Luke Smith<div class="example yui3-skin-sam">
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly{{>console-yui-config-markup}}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly{{>console-yui-config-js}}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly</div>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<h3>Setting up filters in the YUI configuration</h3>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>The configuration object passed to the YUI constructor supports a few settings that can help manage Console output while debugging. These configuration options are `logExclude`, `logInclude`, `logLevel`, `filter`, and `filters`.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>This example will show the use of the `logInclude`, `logExclude`, and `logLevel` configurations.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>An example configuration might look like this:</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny DonnellyYUI({
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly filter : 'debug', // request -debug versions of modules for log statements
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly logExclude : {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly event : true, // Don't broadcast log messages from the event module
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly attribute : true, // or the attribute module
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly widget : true // or the widget module
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly },
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly logLevel : 'error', // Show only errors in the Console
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly useBrowserConsole : false // Don't use the browser's native console
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly}).use('overlay','anim','console', function (Y) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly/* Console instances will default to logLevel = "info" */
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly});
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>`logExclude` and `logInclude` prevent the logging subsystem from broadcasting filtered log messages. `logLevel`, on the other hand is used by Console instances to filter messages received from the subsystem.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>Updating `Y.config.logExclude` or `Y.config.logInclude` at runtime will immediately change the subsystem filtering, but will not recover messages previously sent from that source.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny DonnellyYUI({
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly logExclude : {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly event : true
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly }
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly}).use('console', function (Y) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly/* In here, Y.config refers to the config object passed to the constructor */
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly// Stop broadcasting log messages from the attribute module
b96d996309309541dc72ee198c96c06e1b16bbfeJenny DonnellyY.config.logExclude.attribute = true;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly// Start broadcasting log messages from the event module again
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellydelete Y.config.logExclude.event;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly});
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>When a Console is instantiated, barring explicit `logLevel` attribute configuration, the `logLevel` will be adopted from the YUI instance's configured `logLevel`, or `Y.Console.LOG_LEVEL_INFO` (&quot;info&quot;) as a fallback. Unlike `logExclude`, changing the value in the YUI configuration will only affect instantiated Consoles from that point on. Additionally, you can manually override the `logLevel` a Console instance will display by updating its `logLevel` attribute.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny DonnellyYUI({ logLevel : "warn" }).use('console', function (Y) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellyvar yconsole_1 = new Y.Console(); // logLevel == "warn"
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellyvar yconsole_2 = new Y.Console({
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly logLevel : "info" // override at construction
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly});
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly// This will not affect yconsole_1 or yconsole_2
b96d996309309541dc72ee198c96c06e1b16bbfeJenny DonnellyY.config.logLevel = "error";
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellyvar yconsole_3 = new Y.Console(); // logLevel == "error"
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellyyconsole_1.set("logLevel", "info"); // update this instance
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly});
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>The interactive portion of this example illustrates the effect of various filter settings against logged messages. In a real application, it is most likely that the logging configuration won't be changed at runtime but set once in the YUI configuration at construction.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<p>The most relevant portion of the <a href="#full_code_listing">code for the demo above</a> is the updating of the YUI config and Console attribute.</p>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly// Create and render the Console
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellyvar yconsole = new Y.Console({
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly boundingBox: '#console', // anchored to the page for the demo
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly style: "block"
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly}).render();
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly...
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly// Source include or exclude select
b96d996309309541dc72ee198c96c06e1b16bbfeJenny DonnellyY.on("change", function () {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly if (this.get("value") === "logInclude") {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly Y.config.logInclude = Y.config.logExclude;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly delete Y.config.logExclude;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly } else {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly Y.config.logExclude = Y.config.logInclude;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly delete Y.config.logInclude;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly }
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly updatePreview();
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly}, "#incexc");
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly// These functions are called from a delegated event handler.
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly// See the Full Code Listing for how they are called.
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellyfunction updateSourceFilters(source, checked) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly var disposition = Y.one("#incexc").get("value"),
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly cfg = Y.config[disposition]; // Y.config.logInclude or logExclude
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly if (checked) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly if (!cfg) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly cfg = Y.config[disposition] = {};
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly }
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly cfg[source] = true; // e.g. Y.config.logInclude.sourceA = true;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly } else {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly delete cfg[source];
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly if (!Y.Object.size(cfg)) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly delete Y.config[disposition];
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly }
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly }
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly updatePreview();
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnellyfunction updateLogLevel(level, checked) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly if (checked) {
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly Y.config.logLevel = level;
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly yconsole.set("logLevel", level);
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly updatePreview();
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly }
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<h3 id="full_code_listing">Full Code Listing</h3>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<h4>Markup</h4>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly{{>console-yui-config-markup}}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<h4>JavaScript</h4>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly{{>console-yui-config-js}}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly<h4>CSS</h4>
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly{{>console-yui-config-css}}
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly```
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly
b96d996309309541dc72ee198c96c06e1b16bbfeJenny Donnelly