“log4javascript”记录器存储在本地文件中
"log4javascript" logger to store in local file
我们目前正在使用log4javascript-popUpAppender控制台进行开发,并希望将详细信息存储到本地文件中。
虽然我们可以使用 AjaxAppender 将日志消息发送到服务器并将这些消息记录到使用滚动文件追加器设置的 log4j 中,但我们正在寻找一种在 Log4js 中使用类似于 FileAppender 的方法。
任何想法/建议?
这类似于 http://www.techques.com/question/1-3626960/JavaScript-logger-into-a-rolling-file
由于我们已经实现了log4javascript,我们希望坚持使用相同的框架。
在我看来,这在浏览器中仍然不可行。我又看了一眼;以下是我的观察:
-
在 Firefox 中,我认为目前根本不可能写入本地文件系统,即使用户批准也是如此。从 Firefox 17(我认为)开始,特权代码不能再在网页中运行,这排除了在网络上漂浮的旧方法(例如这里)
-
IE 仍然有其 ActiveX 方法来执行此操作,但它比以往任何时候都更加锁定,并且需要用户执行各种操作才能启用它。
-
HTML5有一个文件系统API,目前只有新版本的Chrome和Opera才能实现。它将文件写入精心沙盒的位置,并且无法控制实际文件名或路径。
-
据我所知,Safari目前没有办法做到这一点。
通常,浏览器明智地提供对本地文件系统上文件的访问很少或根本不提供访问权限,因此这是一种不可靠的记录方式。但是,我编写了一个粗略的BrowserFileAppender,它实现了HTML5和ActiveX方法,如果您觉得有帮助,欢迎您使用它们:
https://gist.github.com/timdown/6572000
为 IE 和 Firefox 添加 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;
- 将图像文件存储在猫鼬模式中的二进制数据中,并以html形式显示图像
- 在使用java使用dropbox选择器从dropbox中提取文件后,如何将文件存储在服务器中
- 如何使用 jQuery 动态更改视频,其中源路径存储在数据库中,文件存储在文件系统中
- rails_admin的 css 和 javascript 文件存储在哪里
- 如果我的文本文件存储在服务器中,如何在 javascript 中读/写文本文件
- HTML5应用程序缓存文件存储在客户端的位置
- 将 Json 文件存储在 AngularJS 变量中,以便与“ng-repeat”一起使用
- 将角度文件存储在轨道中的最佳位置
- 在Mongoose中使用Multer将文件存储到MongoDB中
- 将文件存储在Firebase存储中
- Glassfish/Java/JS:将图像文件存储到servlet中,并将其检索到网页中
- Webaudio API:将数组缓冲区作为文件存储在服务器上,稍后检索
- 将值从文本文件存储到数组中
- Nodejs:在一个新窗口中写入zip文件(存储在一个变量中作为Buffer)
- 如何使用 JavaScript 将 JSON 数据从远程 URL 读取到本地文件存储中的文件
- 哪个更省时?文件存储或SQLite
- 将javascript数组作为csv文件存储在服务器上
- 在数据库中插入clob数据或所有类型的文件存储
- HTML5 - Web SQL数据库文件存储和所有表创建的地方
- 打开一个javascript对话框,将完整的文件存储到一个var中