我们目前正在使用log4javascript-popUpAppender控制台进行开发,希望将详细信息存储到本地文件中。
虽然我们可以使用AjaxAppender向服务器发送日志消息,并将这些消息记录到使用滚动文件附录设置的log4j,但我们正在寻找一种使用类似于Log4js中的FileAppender的方法。
有什么想法/建议吗?
这类似于http://www.techques.com/question/1-3626960/JavaScript-logger-into-a-rolling-file
由于我们已经实现了log4javascript,所以我们希望坚持相同的框架。
发布于 2013-09-15 16:04:43
在我看来,这在浏览器中仍然是不可行的。我又看了一遍,以下是我的观察结果:
通常,浏览器只提供很少或根本不访问本地文件系统上的文件,因此这是一种不可靠的记录方式。不过,我已经编写了一个粗略的BrowserFileAppender,它实现了HTML5和ActiveX方法,如果您发现这些方法很有用,欢迎使用:
发布于 2013-09-10 15:26:24
为IE和火狐添加FileAppender解决方案。
function FileAppender() {}
FileAppender.prototype = new log4javascript.Appender();
FileAppender.prototype.layout = new log4javascript.SimpleLayout();
FileAppender.prototype.append = function(loggingEvent) {
var appender = this;
var getFormattedMessage = function() {
var layout = appender.getLayout();
var formattedMessage = layout.format(loggingEvent);
if (layout.ignoresThrowable()) {
formattedMessage += loggingEvent.getThrowableStrRep();
}
return formattedMessage;
};
writefile = function(destinationFile, message) {
if (isEmpty(destinationFile)) {
log.error("Source location unknown");
return;
}
if ($.browser.msie) {
try {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.OpenTextFile(destinationFile, 8, true);
file.WriteLine(message);
file.close();
} catch (e) {
log.error("Please validate if file exist");
}
} else {
netscape.security.PrivilegeManager
.enablePrivilege("UniversalXPConnect");
this.fso.initWithPath(destinationFile);
if (!this.fso.exists()) {
// create file if needed
this.fso.create(0x00, 0600);
}
var file = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
file.init(this.fso, 0x04 | 0x08 | 0x10, 064, 0);
var line = message;
file.write(line, line.length); // write data
file.close();
}
};
getFile = function() {
return "c://temp//log//Javascriptlog.log";
};
writefile(getFile(), getFormattedMessage());
};
FileAppender.prototype.toString = function() {
return "FileAppender";
};
log4javascript.FileAppender = FileAppender;https://stackoverflow.com/questions/18702720
复制相似问题