Utiliser la fabrique pour créer des logs
    
    
        En plus de pouvoir instancier les objets directement, il est possible d'utiliser une fabrique,
        la méthode  factory() d'une instance Log, et il est possible de configurer
        les objets d'écriture (writers) et leurs filtres. En utilisant la fabrique, vous pouvez attacher
        plusieurs objets d'écriture dont la configuration peut être passée sous forme de tableau ou d'objet
        Zend_Config.
     
    
        Un exemple:
     
    $logger = Zend_Log:: factory(array(  
        'writerName'   => 'Stream',  
            'stream'   => '/tmp/zend.log',  
        ),  
        'filterName'   => 'Priority',  
            'priority' => Zend_Log::WARN,  
        ),  
    ),  
        'writerName'   => 'Firebug',  
        'filterName'   => 'Priority',  
            'priority' => Zend_Log::INFO,  
        ),  
    ),  
)); 
  
    
        Le code ci-dessus instancie un objet journal et 2 objets d'écriture dont un vers un
        fichier local, puis un vers Firebug. Chacun possède un filtre.
     
    
        Chaque objet d'écriture support les options suivantes:
     
    
        - 
            writerName (requis)
            
 - 
                
                    Le nom "court" de l'objet d'écriture; le nom sans le préfixe. Voyez
                    "writerNamespace" pour plus de détails, des exemples sont : "Mock",
                    "Stream", "Firebug".
                 
             
        
        - 
            writerParams (optionnel)
            
 - 
                
                    Tableau associatif de paramètre à utiliser à l'instanciation de l'objet d'écriture.
                    Chaque méthode  factory() fera suivre ces paramètres.
                 
             
        
        - 
            writerNamespace (optionnel)
            
 - 
                
                    Le préfixe de classe ou espace de nom(namespace) à utiliser pour créer le nom de classe
                    complet de l'objet d'écriture. Par défault : "Zend_Log_Writer".
                 
             
        
        - 
            filterName (optionnel)
            
 - 
                
                    Le nom "court" d'un filtre à utiliser sur l'objet d'écriture. Voyez "filterNamespace"
                    pour plus de détails. Exemples: "Message", "Priority".
                 
             
        
        - 
            filterParams (optionnel)
            
 - 
                
                    Tableau associatif de paramètre à utiliser à l'instanciation de l'objet filtre.
                    Chaque méthode  factory() fera suivre ces paramètres.
                 
             
        
        - 
            filterNamespace (optionnel)
            
 - 
                
                    Le préfixe de classe ou espace de nom(namespace) à utiliser pour créer le nom de classe
                    complet de l'objet filtre. Par défault : "Zend_Log_Filter".
                 
             
        
     
    
        Chaque objet d'écriture et chaque filtre possède des options.
     
    Options pour les objets d'écriture
        
        Zend_Log_Writer_Db Options
            
            
                - 
                    db
                    
 - 
                        
                            Une instance de Zend_Db_Adapter
                         
                     
                
                - 
                    table
                    
 - 
                        
                            Nom de la table à utiliser.
                         
                     
                
                - 
                    columnMap
                    
 - 
                        
                            Tableau associatif de correspondance entre les noms des colonnes de la table
                            et les champs des évènements du journal.
                         
                     
                
             
         
        Zend_Log_Writer_Firebug Options
            
            
                Aucune option n'est acceptée par cet objet d'écriture.
             
         
        Zend_Log_Writer_Mail Options
            
            
                Zend_Log_Writer_Mail actuellement (en 1.10) n'implémente pas la
                fabrique, et renverra une exception si vous tentez de l'utiliser via
                 Zend_Log::factory().
             
         
        Zend_Log_Writer_Mock Options
            
            
                Aucune option n'est acceptée par cet objet d'écriture.
             
         
        Zend_Log_Writer_Null Options
            
            
                Aucune option n'est acceptée par cet objet d'écriture.
             
         
        Zend_Log_Writer_Stream Options
            
            
                - 
                    stream|url
                    
 - 
                        
                            Un identifiant de flux PHP valide vers lequel journaliser.
                         
                     
                
                - 
                    mode
                    
 - 
                        
                            Le mode I/O (Lecture/Ecriture) à utiliser; défaut : "a" pour "append".
                         
                     
                
             
         
        Zend_Log_Writer_Syslog Options
            
            
                - 
                    application
                    
 - 
                        
                            Nom de l'application utilisé par le journaliseur syslog.
                         
                     
                
                - 
                    facility
                    
 - 
                        
                            Facility utilisée par le journal syslog.
                         
                     
                
             
         
        Zend_Log_Writer_ZendMonitor Options
            
            
               Aucune option n'est acceptée par cet objet d'écriture.
             
         
     
    Options des filtres
        
        Zend_Log_Filter_Message Options
            
            
                - 
                    regexp
                    
 - 
                        
                            Expression régulière à faire correspondre par rapport au message du journal.
                         
                     
                
             
         
        Zend_Log_Filter_Priority Options
            
            
                - 
                    priority
                    
 - 
                        
                            La priorité maximale à journaliser.
                         
                     
                
                - 
                    operator
                    
 - 
                        
                            L'opérateur de comparaison (supérieur ou inférieur) à utiliser pour la comparaison,
                            "<=" est utilisé par défaut.
                         
                     
                
             
         
        Zend_Log_Writer_Suppress Options
            
            
                Aucune option n'est acceptée par cet objet d'écriture.
             
         
     
    Créer des objets d'écriture et des filtres configurés
        
        
            SI vous souhaitez créer vos propres objets d'écriture du journal, ou vos propres filtres, il est
            possible de les rendre compatibles avec  Zend_Log::factory() facilement.
         
        
            Vous devez au minimum implémenter
            Zend_Log_FactoryInterface, qui attend une méthode statique
             factory() accéptant un seul argument,
            $config, de types tableau ou instance de
            Zend_Config. Si vos objets étendent
            Zend_Log_Writer_Abstract, ou vos filtres étendent
            Zend_Log_Filter_Abstract, alors ce sera tout.
         
        
            Après, définissez la correspondance entre les options de configuration et les arguments du
            constructeur. Par exemple :
         
        class My_Log_Writer_Foo extends Zend_Log_Writer_Abstract  
{  
    public function __construct($bar, $baz)  
    {  
        // ...  
    }  
   
    public static function factory ($config)  
    {  
        if ($config instanceof Zend_Config) {  
            $config = $config->toArray();  
        }  
            throw new Exception(  
                'factory attend un tableau ou un Zend_Config'  
            );  
        }  
   
            'bar' => null,  
            'baz' => null,  
        );  
   
        return new self(  
            $config['bar'],  
            $config['baz']  
        );  
    }  
} 
  
        
            Aussi, il est possible d'appeler les setters après l'instanciation, mais avant de retourner
            l'instance:
         
        class My_Log_Writer_Foo extends Zend_Log_Writer_Abstract  
{  
    public function __construct($bar = null, $baz = null)  
    {  
        // ...  
    }  
   
    public function setBar($value)  
    {  
        // ...  
    }  
   
    public function setBaz($value)  
    {  
        // ...  
    }  
   
    public static function factory ($config)  
    {  
        if ($config instanceof Zend_Config) {  
            $config = $config->toArray();  
        }  
            throw new Exception(  
                'factory attend un tableau ou un Zend_Config'  
            );  
        }  
   
        $writer = new self();  
        if (isset($config['bar'])) {  
            $writer->setBar($config['bar']);  
        }  
        if (isset($config['baz'])) {  
            $writer->setBaz($config['baz']);  
        }  
        return $writer;  
    }  
} 
  
     
 
         
            
 | 
         
 
  |