1
2
3
4
5
6
|
/*!
* fileLogger
* Copyright 2015 Peter Bakondy https://github.com/pbakondy
* See LICENSE in this repository for license information
*/
!function(){angular.module("fileLogger",["ngCordova.plugins.file"]).factory("$fileLogger",["$q","$window","$cordovaFile","$timeout",function(e,o,n,r){"use strict";function l(){return!o.cordova&&!o.PhoneGap&&!o.phonegap}function t(e){angular.isString(e)?(e=e.toUpperCase(),-1===m.indexOf(e)&&(e="INFO")):e="INFO";for(var o,n=(new Date).toJSON(),r=Array.prototype.slice.call(arguments,1),t=[n,e],c=0;c<r.length;c++)if(angular.isArray(r[c])){o="[Array]";try{o=JSON.stringify(r[c])}catch(i){}t.push(o)}else if(angular.isObject(r[c])){o="[Object]";try{o=JSON.stringify(r[c])}catch(i){}t.push(o)}else t.push(r[c]);if(l()){if(r.unshift(n),angular.isObject(console)&&angular.isFunction(console.log))switch(e){case"DEBUG":angular.isFunction(console.debug)?console.debug.apply(console,r):console.log.apply(console,r);break;case"INFO":angular.isFunction(console.debug)?console.info.apply(console,r):console.log.apply(console,r);break;case"WARN":angular.isFunction(console.debug)?console.warn.apply(console,r):console.log.apply(console,r);break;case"ERROR":angular.isFunction(console.debug)?console.error.apply(console,r):console.log.apply(console,r);break;default:console.log.apply(console,r)}}else console.log(t.join(" "));v.push({message:t.join(" ")+"\n"}),h||a()}function a(){if(!v.length)return void(h=!1);h=!0;var e=v.shift();c(e.message).then(function(){r(function(){a()})},function(){r(function(){a()})})}function c(r){var t=e.defer();return l()?(o.localStorage[F]||(o.localStorage[F]=""),o.localStorage[F]+=r,t.resolve()):n.checkFile(cordova.file.dataDirectory,F).then(function(){n.writeExistingFile(cordova.file.dataDirectory,F,r).then(function(){t.resolve()},function(e){t.reject(e)})},function(){n.writeFile(cordova.file.dataDirectory,F,r,!0).then(function(){t.resolve()},function(e){t.reject(e)})}),t.promise}function i(){var r=e.defer();return l()?r.resolve(o.localStorage[F]):n.readAsText(cordova.file.dataDirectory,F).then(function(e){r.resolve(e)},function(e){r.reject(e)}),r.promise}function s(){var r=e.defer();return l()?(o.localStorage.removeItem(F),r.resolve()):n.removeFile(cordova.file.dataDirectory,F).then(function(e){r.resolve(e)},function(e){r.reject(e)}),r.promise}function u(e){return angular.isString(e)&&e.length>0?(F=e,!0):!1}function f(){var r=e.defer();return l()?r.resolve({name:F,localURL:"localStorage://localhost/"+F,type:"text/plain",size:o.localStorage[F]?o.localStorage[F].length:0}):n.checkFile(cordova.file.dataDirectory,F).then(function(e){e.file(r.resolve,r.reject)},r.reject),r.promise}function g(){var e=Array.prototype.slice.call(arguments,0);e.unshift("DEBUG"),t.apply(void 0,e)}function p(){var e=Array.prototype.slice.call(arguments,0);e.unshift("INFO"),t.apply(void 0,e)}function y(){var e=Array.prototype.slice.call(arguments,0);e.unshift("WARN"),t.apply(void 0,e)}function d(){var e=Array.prototype.slice.call(arguments,0);e.unshift("ERROR"),t.apply(void 0,e)}var v=[],h=!1,m=["DEBUG","INFO","WARN","ERROR"],F="messages.log";return{log:t,getLogfile:i,deleteLogfile:s,setStorageFilename:u,checkFile:f,debug:g,info:p,warn:y,error:d}}])}();
|