Bonjour,

voila j'ai écrit mon programme en PHP en utilisant des classe.

Pour le moment je fait des simples sorti écran pour voir ce qui se passe quand mon programme tourne.

maintenant j'aimerais loguer ces informations dans un fichier de log.

Pour ne pas reinventer la roue je vais utiliser la librairie monolog.

ça fonctionne trés bien lorsque je fait mes logs fichier :

Utilsation standard :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
 
require 'vendor/autoload.php';
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
 
 
$logger = new Logger('channel-name');
$logger->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::DEBUG));
$logger->info('This is a log! ^_^ ');
$logger->warning('This is a log warning! ^_^ ');
$logger->error('This is a log error! ^_^ ');
me premiere question c'est comment afficher à la fois les logs dans mon fichier txt de log mais aussi à l'écran quand je lance le programme ?

ma deuxiéme question, c'est comment j'intégrer ce fichier de log, sans le redéclarer à chaque fois des mes classe :

exemple





Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
 
require 'vendor/autoload.php';
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
 
 
class voiture {
 
    public $name = "";
    public $logger ="";
 
 
    public function __construct($logger) {
        $this->logger = $logger;    
 
    }
 
    function getName () {
        return $this->name;
    }
    function setName($name){
        $this->logger->info('This is a log! ^_^ '.$name);        
        $this->name = $name;
    }
}
 
 
$logger = new Logger('channel-name');
$logger->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::DEBUG));
$logger->info('This is a log! ^_^ ');
$logger->warning('This is a log warning! ^_^ ');
$logger->error('This is a log error! ^_^ ');
 
$voitureA = new voiture();
$voitureA->setName('Teska');
dans ce code j'ajoute dans ma classe mon objet logger.

Mais du coup je vais devoir modifier toute mes classes en ajouter cette information.

du coup n'y a t'il pas un moyen pour gérer ma classe logger de façon global et de ne pas le passer en paramétre de mon construct ?


merci