diff --git a/examples/changeLevel.js b/examples/changeLevel.js
new file mode 100644
index 0000000..2d8e278
--- /dev/null
+++ b/examples/changeLevel.js
@@ -0,0 +1,26 @@
+
+/**
+ * Module dependencies.
+ */
+
+var Log = require('../lib/log')
+  , log = new Log();
+
+var loop = 0;
+
+function LogStuffOnLevels(){
+  loop++;
+  log.debug('a debug message %s',loop);
+  log.info('a info message %s',loop);
+  log.notice('a notice message %s',loop);
+  log.warning('a warning message %s',loop);
+  log.error('a error message %s',loop);
+  log.critical('a critical message %s',loop);
+  log.alert('a alert message %s',loop);
+  log.emergency('a emergency message  %s',loop);
+}
+
+for(var i=0;i<8;i++){
+  log.setLevel(i);
+  LogStuffOnLevels();
+}
diff --git a/lib/log.js b/lib/log.js
index 48a2ad2..a024258 100644
--- a/lib/log.js
+++ b/lib/log.js
@@ -21,8 +21,9 @@ var EventEmitter = require('events').EventEmitter;
  */
 
 var Log = exports = module.exports = function Log(level, stream){
-  if ('string' == typeof level) level = exports[level.toUpperCase()];
-  this.level = level || exports.DEBUG;
+  if ('string' === typeof level) level = exports[level.toUpperCase()];
+  if ('undefined' === typeof level) level = exports.DEBUG;
+  this.level = level;
   this.stream = stream || process.stdout;
   if (this.stream.readable) this.read();
 };
@@ -157,6 +158,18 @@ Log.prototype = {
       );
     }
   },
+  
+  /**
+   * Change current logging level.
+   *
+   * @param  {Number} level
+   * @api public
+   */
+  
+  setLevel: function(level) {
+    if ('string' == typeof level) level = exports[level.toUpperCase()];
+    this.level = level;
+  },
 
   /**
    * Log emergency `msg`.