我需要将所有日志写入文件,就像我们在服务器端编程中所做的那样。我尝试使用cordova-plugin-logtofile但我无法安装它。所以我尝试像这样直接写入文件。
请看我的代码。
logger.js
var loggerOb = null;
var loggerFilePath = null;
var loggerLevel = 4;
function logStr(logType, str, obj) {
let time = new Date().getTime();
return "[" + time + "] :: "+ logType + " :: " + str + " :: " + JSON.stringify(obj) + " \n";
}
function loggerWriteLog(str) {
loggerOb.createWriter(function(fileWriter) {
fileWriter.seek(fileWriter.length);
var blob = new Blob([str], {type:'text/plain'});
fileWriter.write(blob);
console.log("Logger :: Ok, in theory i worked", str);
}, function(err){
console.log("Logger :: Failed to log ", err);
});
}
function loggerInit(log) {
loggerFilePath = cordova.file.externalApplicationStorageDirectory;
window.resolveLocalFileSystemURL(loggerFilePath, function(dir) {
dir.getFile("log.txt", {create:true}, function(file) {
console.log("Logger :: got the file", file);
loggerOb = file;
loggerWriteLog(log);
});
});
}
export default {
debug(str, obj = {}) {
var log = logStr('debug', str, obj);
if(loggerLevel >= 4) {
if(loggerOb == null){
loggerInit(log);
} else {
loggerWriteLog(log);
}
}
},
info(str, obj = {}) {
var log = logStr('info', str, obj);
if(loggerLevel >= 3) {
if(loggerOb == null){
loggerInit(log);
} else {
loggerWriteLog(log);
}
}
},
warn(str, obj = {}) {
var log = logStr('warning', str, obj);
if(loggerLevel >= 2) {
if(loggerOb == null){
loggerInit(log);
} else {
loggerWriteLog(log);
}
}
},
error(str, obj = {}) {
var log = logStr('error', str, obj);
if(loggerLevel >= 1) {
if(loggerOb == null){
loggerInit(log);
} else {
loggerWriteLog(log);
}
}
},
}
my_component.js
import logger from '../common/logger';
logger.info("test info")
logger.debug("test debug")
logger.error("test error")
在这里,我的问题是我只能写任何一行。