我需要将所有日志写入文件,就像我们在服务器端编程中一样。我尝试使用cordova-plugin-logtofile,但无法安装。因此,我尝试直接写入文件like this。
请查看我的代码。
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")
这里我的问题是我只能写任何一行。
答案 0 :(得分:0)
我同样有需要将所有cordova android应用程序的日志写入文件。
我所做的是一个钩子,该钩子将修补cordova活动和LOG.java文件以记录到文件中,而不仅仅是使用Android的默认日志系统。
如果不仅将javascript的日志(console.log)存储在文件中,而且还存储来自调用cordova LOG类的插件的其他日志,则具有优势。
问题在于,每次我更新cordova android平台版本时,我都必须检查钩子(为什么我仍在使用cordova 6的众多原因之一)。
如果您不想结束用日志填充所有磁盘,也应该谨慎使用一种logrotate系统。