Logger

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<div style="margin: 10px" ng-app="app" ng-controller="MainController as vm">
    <form novalidate class="form-inline">
      <div class="form-group">
         <input type="text" placeholder="Digite um texto..." class="form-control" ng-model="vm.logs" />
         <button type="submit" class="btn btn-primary" ng-click="vm.logar()">Testar Log</button>
      </div>
    </form>
  <hr/>
     <span class="label" ng-class="{'label-info': vm.resultado.type == 'success', 'label-danger': vm.resultado.type == 'error'}" style="padding: 10px" ng-show="vm.resultado">{{vm.resultado.msg}}</span>

JavaScript

(function() {

 var app = angular.module('app', []);
 app.factory('logApi', ['fileManager', LogApi]);
 
 function LogApi(fileManager) {
 		var self = this;
    
    self.processarLog = function(logs) {
    	var ret = fileManager.upload(logs).then(function(msg) {
       	 return { type: 'success', msg: msg };
      }, function(error) {
      	return { type: 'error', msg: error };
      });
 			return ret;
    }
    
    return self;
 }
 
 app.factory('fileManager', ['$q', FileManager]);
 
 function FileManager($q) {
 	var self = this;

  self.upload = function(dados) {
  	return $q(function(resolve, reject) {
  		if (dados) {
      	resolve('Executado com sucesso.');
      } else {
      	reject('Nao funcionou o upload');
      }
  });
  } 
  return self;
 }
 
  app.controller('MainController', ['logApi', MainController])
 
 function MainController(logApi) {
 		var self = this;
    self.logs = '';
    self.resultado = '';
    self.logar = function() {
    	logApi.processarLog(self.logs).then(function(value) { self.resultado = value });
    }
 }
})();