我在Flex 3中开发了我的应用程序前端。 对于日志记录,我们有时会使用跟踪和记录器,但我们没有特定的方式将日志存储在用户机器的本地文件中。在Flex中记录到本地文件
事实上,我从Adobe livedocs学到的是,flashplayer自己管理flashlog.txt文件中的所有日志。
有没有其他办法可以维护一份日志?每次我们执行“注销”时,flashlog.txt都会被清除。
我在Flex 3中开发了我的应用程序前端。 对于日志记录,我们有时会使用跟踪和记录器,但我们没有特定的方式将日志存储在用户机器的本地文件中。在Flex中记录到本地文件
事实上,我从Adobe livedocs学到的是,flashplayer自己管理flashlog.txt文件中的所有日志。
有没有其他办法可以维护一份日志?每次我们执行“注销”时,flashlog.txt都会被清除。
您还没有提到您的应用程序是桌面应用程序还是基于浏览器。
在你可以写一个新类的桌面应用程序的情况下,
import mx.core.mx_internal;
use namespace mx_internal;
public class LoggingFileTarget extends LineFormattedTarget {
private const DEFAULT_LOG_PATH:String = "C:/mylogfile.txt";
private var log:File;
public function LoggingFileTarget(logFile:File = null) {
if(logFile != null) {
log = logFile;
} else {
log = new File(DEFAULT_LOG_PATH);
}
}
public function get logURI():String {
return log.url;
}
mx_internal override function internalLog(message:String):void {
write(message);
}
private function write(msg:String):void {
var fs:FileStream = new FileStream();
try {
fs.open(log, FileMode.APPEND);
fs.writeUTFBytes(msg + "\n");
fs.close();
} catch(e:Error) {
trace("FATAL:: Unable to write to log file.");
}
}
public function clear():void {
var fs:FileStream = new FileStream();
fs.open(log, FileMode.WRITE);
fs.writeUTFBytes("");
fs.close();
}
}
在基于浏览器的应用程序的情况下,可以随时写:到内存中的串,或到本地共享对象。使用共享的本地对象,继续附加到日志,然后通过Web调用进行整理。
这是否意味着我应该在Shared对象中维护一个字符串,然后以一定的时间间隔将它发送到服务器并清除它,因为Shared Object也具有内存限制? – Miral 2011-06-15 04:29:31
对于Flex应用程序,是的!这就是我看到许多Flex应用程序正在使用的方法。 – sangupta 2011-07-19 16:23:52
为了使'mx_internal覆盖函数internalLog()'工作,我必须将其更改为'覆盖mx_internal函数internalLog'并添加'import mx.core.mx_internal;使用命名空间mx_internal;'到类的头部 – 2013-07-12 11:52:32
有经验的人,请帮我解决这个问题。 – Miral 2011-04-28 10:06:52