簡體   English   中英

如何從index.php中調用monolog?

[英]How to call for a monolog from the index.php?

有一個使用Monolog和PHP-DI的例子(來自手冊,有2個文件 - index.php和config.php:

<?php
// config.php

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

return [
    // ...

    Psr\Log\LoggerInterface::class => DI\factory(function () {
        $logger = new Logger('mylog');

        $fileHandler = new StreamHandler('path/to/your.log', Logger::DEBUG);
        $fileHandler->setFormatter(new LineFormatter());
        $logger->pushHandler($fileHandler);

        return $logger;
    }),
];

這個config.php在下面的代碼中使用:

// index.php    
use DI\ContainerBuilder;

require __DIR__ . '/../vendor/autoload.php';

$containerBuilder = new ContainerBuilder;
$containerBuilder->addDefinitions(__DIR__ . '/config.php');
$container = $containerBuilder->build();

我怎么能在index.php中使用它? 我經常以這種方式使用Monolog:

$log = new Logger('name'); 
$log->warning('Foo');

但是如何用Container調用呢 我能夠在簡單的$ container-> set(),$ container-> get()模式下完成。 但是這樣使用Container Builder我找不到辦法。 此外,當我創建var_dump($container) ,沒有任何記錄器的標志。

您需要將$log = new Logger('name')替換為:

$log = $container->get(\Psr\Log\LoggerInterface::class);

請參閱文檔的這一部分: http//php-di.org/doc/getting-started.html#3-create-the-objects

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM