Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flex3 在Flex中登录到本地文件_Flex3_Flash - Fatal编程技术网

Flex3 在Flex中登录到本地文件

Flex3 在Flex中登录到本地文件,flex3,flash,Flex3,Flash,我用Flex3开发了我的应用程序前端。 对于日志记录,我们有时使用跟踪和记录器,但我们没有特定的方法将日志存储在用户机器的本地文件中 事实上,我从AdobeLiveDocs中学到的是flashplayer管理flashlog.txt文件中的所有日志 是否有其他方法可以维护日志副本?每次我们执行“注销”时,flashlog.txt都会被清除。您没有提到您的应用程序是桌面应用程序还是基于浏览器的应用程序 对于桌面应用程序,您可以编写一个新类 import mx.core.mx_internal;

我用Flex3开发了我的应用程序前端。 对于日志记录,我们有时使用跟踪和记录器,但我们没有特定的方法将日志存储在用户机器的本地文件中

事实上,我从AdobeLiveDocs中学到的是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调用进行整理。

您没有提到您的应用程序是桌面应用程序还是基于浏览器的应用程序

对于桌面应用程序,您可以编写一个新类

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调用进行整理。

有经验的人,请帮助我解决此问题。有经验的人,请帮助我解决这个问题。这是否意味着我应该在共享对象中维护一个字符串,然后在一定的时间间隔内将其发送到服务器并清除它,因为共享对象也有内存限制?对于flex应用程序,是的!这就是我看到许多flex应用程序采用的方法。为了使
mx_内部重写函数internalLog()
工作,我必须将其更改为
override mx_内部函数internalLog
并添加
import mx.core.mx_internal;使用名称空间mx_internal到类的头谢谢@HoangHuynh-我已经更新了代码以包含相同的内容。这是否意味着我应该在共享对象中维护一个字符串,然后以一定的时间间隔将其发送到服务器并清除它,因为共享对象也有内存限制?对于flex应用程序,是的!这就是我看到许多flex应用程序采用的方法。为了使
mx_内部重写函数internalLog()
工作,我必须将其更改为
override mx_内部函数internalLog
并添加
import mx.core.mx_internal;使用名称空间mx_internal
到classThank@HoangHuynh的头部-我已经更新了代码以包含相同的内容。