Вход в локальный файл во Flex - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть интерфейс приложения, разработанный во Flex 3. Для ведения журнала мы время от времени используем трассировки и Logger, но у нас нет конкретного способа хранить журналы в локальном файле компьютера пользователя.

На самом деле, я узнал из Adobe liveocs, что flashplayer управляет всеми журналами в файле flashlog.txt.

Есть ли другой способ сохранить копию логов? flashlog.txt очищается каждый раз, когда мы выполняем «Выход».

1 Ответ

3 голосов
/ 13 июня 2011

Вы не упомянули, является ли ваше приложение настольным или браузерным.

В случае настольного приложения вы можете написать новый класс,

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();                     
        }
    }

В случае приложения на основе браузера вы можете продолжать запись либо в строку в памяти, либо в локальный общий объект. Используя общий локальный объект, продолжайте добавлять в журналы, а затем сопоставлять с помощью веб-вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...