code: function validateOptions(opt) {
      if (opt) {
          if (opt.hasOwnProperty('dir')) {
              if (opt.dir.length < 1 || typeof opt.dir !== 'string') {
                  throw new TypeError('dir value must be a valid string');
              }
              if (!isValidString(opt.dir)) {
                  throw new TypeError('only underscore is allowed in dir name');
              }
              options.dir = opt.dir || options.dir;
          }
  
  
          if (opt.hasOwnProperty('file')) {
              if ((opt.file.length < 1 || typeof opt.file !== 'string')) {
                  throw new TypeError('file value must be a valid string');
              }
              if (!isValidString(opt.file)) {
                  throw new TypeError('only underscore is allowed in file name');
              }
              options.file = opt.file || options.file;
          }
  
          if (opt.hasOwnProperty('dateWise')) {
              if (typeof opt.dateWise !== 'boolean') {
                  throw new TypeError('dateWise must be a boolean');
              }
              options.dateWise = opt.dateWise || options.dateWise;
          }
      }
      if (options.dateWise === true) {
          todayDate = todayDate.concat(new Date().getDate(), '_', monthsName[new Date().getMonth()], '_', new Date().getFullYear());
          if (options.file.indexOf('.log') === -1) {
              options.file = String().concat(options.file, '_', todayDate, '.log');
          } else {
              options.file = String().concat(options.file, '_', todayDate);
          }
  
      } else {
          if (options.file.indexOf('.log') === -1) {
              options.file = String().concat(options.file, '.log');
          } else {
              options.file = String().concat(options.file);
          }
      }
      return options;
  }
docs: [validateOptions purify options if provided]
  @param  {Object} opt [options provided]
  @return {Object}     [filtered options]