Флекс и петрушка - PullRequest
       42

Флекс и петрушка

0 голосов
/ 02 сентября 2011

Я ищу возможность регистрировать сообщения в моем проекте Flex 4.5.Это должно охватывать сообщения об ошибках в remoteClasses, errorHandler или сообщениях, набираемых вручную.После прочтения большого количества веб-страниц решение от parslay выглядит хорошо.в любом случае я хочу переключиться на эту платформу.

преимущество заключается в возможности настройки поведения ведения журнала во время выполнения.но я не понимаю документацию.возможно, потому что я новичок в петрушке.Также у Google нет подходящего результата.

Вы уже сделали это, и вы можете дать мне несколько фрагментов кода.Большое спасибо

Фрэнк

РЕДАКТИРОВАТЬ: Из-за обоснованной критики J_A_X, я добавляю свой код, потому что я частично преуспел.

Сначала нам нужен файл конфигурации, потому что яхотите настроить ведение журнала во время выполнения.Это простой xml-файл в корне проекта.

<?xml version="1.0" encoding="UTF-8"?>
<objects 
    xmlns="http://www.spicefactory.org/parsley"
    xmlns:log="http://www.spicefactory.org/parsley/flex/logging"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.spicefactory.org/parsley 
        http://www.spicefactory.org/parsley/schema/2.3/parsley-core.xsd 
        http://www.spicefactory.org/parsley/flex/logging 
        http://www.spicefactory.org/parsley/schema/2.3/parsley-logging-flex.xsd"
    >

    <log:target level="info" type="components.SocketTarget">

    </log:target>

</objects>

Это мое приложение:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               minWidth="955" minHeight="600"
               initialize="onAppInitiallize(event)" 
               xmlns:parsley="http://www.spicefactory.org/parsley"
               >
    <fx:Script>
        <![CDATA[
            import mx.controls.Label;
            import mx.events.FlexEvent;
            import mx.logging.Log;

            import org.spicefactory.lib.logging.LogContext;
            import org.spicefactory.parsley.flex.logging.FlexLoggingXmlSupport;

            protected function onAppInitiallize(event:FlexEvent):void
            {
                FlexLoggingXmlSupport.initialize();
                LogContext.getLogger(this);
                //Log.getLogger("myCat").info("MyInfo");
            }

            protected function button1_clickHandler():void
            {
                Log.getLogger(this.toString()).info("myMessage");
                Log.getLogger(this.toString()).fatal("myMessage");


            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <parsley:ContextBuilder>
            <parsley:XmlConfig file="config.xml"/>
        </parsley:ContextBuilder>
    </fx:Declarations>

    <s:Button click="button1_clickHandler()" label="SendLogToParsley" />
</s:Application>

На этом этапе ведение журнала будет работать в консоли Flex Builder.потому что петрушка по умолчанию использует TraceTarget.Теперь я хочу отправить мои файлы журналов в сокет.Я написал несколько грубый SocketTarget.

package de.axurit.components
{
    import flash.net.Socket;

    import mx.logging.AbstractTarget;
    import mx.logging.LogEvent;
    import mx.logging.targets.LineFormattedTarget;

    public class SocketTarget extends AbstractTarget
    {
        private var _host:String;
        private var _port:int;
        private var _socket:Socket;

        public function SocketTarget(host:String = "localhost",port:int=8085)
        {
            _host = host;
            _port = port;
            _socket = new Socket (host,port);
            super();
        }

        override public function logEvent (event:LogEvent):void
        {
            trace ("logevent" + event.message);
            _socket.writeUTF(event.message + String.fromCharCode(13));
            _socket.flush();
        }
    }
}

В документации по петрушке я вижу комментарий

Тип цели по умолчанию, созданный этим тегом, - TraceTarget.Вы можете явно объявить другие целевые типы:

Если я добавлю атрибут типа, я получу сообщение об ошибке «Одна или несколько ошибок в BootstrapProcessor».Так же, как я получил после опечатки.

Можете ли вы дать мне несколько советов, как я могу отправить свои журналы в место назначения сокета?

1 Ответ

0 голосов
/ 05 сентября 2011

Вы создаете сокет, но никогда не подключаете его.Кроме того, если вы собираетесь создать цель журнала, заставьте свой класс расширить цель трассировки и переопределить функцию журнала.

...