PHP - Implementar mecanismo de registro para archivar en varias clases

Me gustaría implementar el mecanismo de registro para archivar en PHP:

La ruta del archivo de registro estará en el archivo de configuración config.phpen varias clases me gustaría registrar algunos eventos en el archivo de registro

Por ejemplo:

    Class A {

        public function f_A {
            log_to_file($message);
        }

    }

    Class B {

        public function f_B {
            log_to_file($message);
        }

    }

Estaré muy agradecido por cualquier consejo. Me gustaría implementar alguna solución fácil y elegante.

Lo estaba pensando (gracias por sus respuestas) y creo que lo haré de esta manera (tal vez, hay algunos errores, lo estaba escribiendo desde cero):

interface Logger {
    public function log_message($message);
}

class LoggerFile implements Logger {
    private $log_file;

public function __construct($log_file) {
    $this->log_file = $log_file;
}
public function log_message($message) {
        if (is_string($message)) {
            file_put_contents($this->log_file, date("Y-m-d H:i:s")." ".$message."\n", FILE_APPEND);
        }
    }
}

//maybe in the future logging into database

class LoggerDb implements Logger {
    private $db;

    public function __construct($db) {
        //some code
    }
public function log_message($message) {
        //some code
    }
}

Class A {
    private $logger;

public function __construct(Logger $l) {
        $this->logger = $l;
    }


public function f_A {
    $this->logger->log_message($message);
}
}

Class B {
    private $logger;

public function __construct(Logger $l) {
        $this->logger = $l;
    }


public function f_B {
    $this->logger->log_message($message);
}
}

//usage:

//in config.php:

define("CONFIG_LOG_FILE", "log/app_log.log");

//in the index.php or some other files

$logger = new LoggerFile(CONFIG_LOG_FILE);

$instance_a = new A($logger);
$instance_b = new B($logger);

Respuestas a la pregunta(3)

Su respuesta a la pregunta