我在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