var JX = require('javelin').JX;

var fs = require('fs');
var util = require('util');

JX.install('AphlictLog', {
  construct : function() {
    this._writeToLogs = [];
    this._writeToConsoles = [];
  },

  members : {
    _writeToConsoles : null,
    _writeToLogs : null,

    addLogfile : function(path) {
      var options = {
        flags: 'a',
        encoding: 'utf8',
        mode: 066
      };

      var logfile = fs.createWriteSteam(path, options);

      this._writeToLogs.push(logfile);

      return this;
    },

    addConsole : function(console) {
      this._writeToConsoles.push(console);
      return this;
    },

    log : function(pattern) {
      var str = util.format.apply(null, arguments);
      var date = new Date().toLocaleString();
      str = '[' + date + '] ' + str;

      var ii;
      for (ii = 0; ii < this._writeToConsoles.length; ii++) {
        this._writeToConsoles[ii].log(str);
      }

      for (ii = 0; ii < this._writeToLogs.length; ii++) {
        this._writeToLogs[ii].write(str + "\n");
      }
    }

  }

});