Log4php отдельный вывод для levelRange не работает - PullRequest
0 голосов
/ 05 июля 2018

У меня проблема с настройкой log4php, и я не знаю, где проверить документацию. У меня есть этот конфиг:

Logger::configure(array(
    'rootLogger' => array(
        'level' => 'INFO',
        'appenders' => array('info'),
    ),
    'loggers' => array(
        'debug' => array(
            'level' => 'DEBUG',
            'appenders' => array('debug'),
            'additivity' => false
        ),
        'error' => array(
            'level' => 'ERROR',
            'appenders' => array('error'),
            'additivity' => false
        )
    ),
    'appenders' => array(
        'info' => array(
            'class' => 'LoggerAppenderDailyFile',
            'layout' => array(
                'class' => 'LoggerLayoutPattern',
                'params' => array(
                    'conversionPattern' => '%date %logger %-5level %msg%n'
                )
            ),
            'params' => array(
                'datePattern' => 'Y-m-d',
                'file' => '../log/ilias-info-%s.log',
                'append' => true
            ),
            'filters' => array(
                    'class' => 'LoggerFilterLevelRange',
                    'params' => array(
                        'levelMin' => 'info',
                        'levelMax' => 'info',
                    )
            )
        ),
        'debug' => array(
            'class' => 'LoggerAppenderDailyFile',
            'layout' => array(
                'class' => 'LoggerLayoutPattern',
                'params' => array(
                    'conversionPattern' => '%date %logger %-5level %msg%n'
                )
            ),
            'params' => array(
                'datePattern' => 'Y-m-d',
                'file' => '../log/ilias-debug-%s.log',
                'append' => true
            ),
            'filters' => array(
                    'class' => 'LoggerFilterLevelRange',
                    'params' => array(
                        'levelMin' => 'debug',
                        'levelMax' => 'debug',
                    )
            )
        ),
        'error' => array(
            'class' => 'LoggerAppenderDailyFile',
            'layout' => array(
                'class' => 'LoggerLayoutPattern',
                'params' => array(
                    'conversionPattern' => '%date %logger %-5level %msg%n'
                )
            ),
            'params' => array(
                'datePattern' => 'Y-m-d',
                'file' => '../log/ilias-error-%s.log',
                'append' => true
            ),
            'filters' => array(
                    'class' => 'LoggerFilterLevelRange',
                    'params' => array(
                        'levelMin' => 'error',
                        'levelMax' => 'error',
                    )
            )
        )
    )
));

Использование: Я определяю один раз

$logger = Logger::getLogger(basename(__FILE__));

и затем я записываю то, что мне нужно, вот так:

$logger->info("INFO");
$logger->debug("DEBUG");
$logger->error("ERROR");

но создается только файл журнала информации. Я использовал PHP-способ для настройки логгера, потому что для меня это кажется самым простым способом сделать это, но документации по этому способу не очень много. Что я делаю не так?

1 Ответ

0 голосов
/ 05 июля 2018

ну, мне потребовалось некоторое время, чтобы заставить его работать тоже. мой текущий конфиг работает:

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://logging.apache.org/log4php/">
<appender name="default" class="LoggerAppenderRollingFile" threshold="DEBUG">
    <layout class="LoggerLayoutPattern">
        <param name="conversionPattern" value="%date %-30logger %-5level %msg%n"/>
    </layout>
    <param name="file" value="/mnt/media/log/backend.debug.log"/>
    <param name="maxFileSize" value="100MB"/>
    <param name="maxBackupIndex" value="20"/>
</appender>
<appender name="splunk" class="LoggerAppenderRollingFile" threshold="INFO">
    <layout class="LoggerLayoutPattern">
        <param name="conversionPattern" value="%date %-30logger %-5level %msg%n"/>
    </layout>
    <param name="file" value="/mnt/media/log/backend.log"/>
    <param name="maxFileSize" value="100MB"/>
    <param name="maxBackupIndex" value="20"/>
</appender>
<appender name="console" class="LoggerAppenderConsole" threshold="DEBUG">
    <layout class="LoggerLayoutSimple">
    </layout>
</appender>

<root>
    <level value="TRACE"/>
    <appender_ref ref="default"/>
    <appender_ref ref="splunk"/>
    <appender_ref ref="console"/>
</root>

Для использования

$configurator = new LoggerConfiguratorDefault();
$logConfig    = $configurator->parse(__DIR__ . "/config/log4php_backend.xml"); // this is where my xml file is located
Logger::configure($logConfig);

Это версия, которую я создаю в приложении

"apache/log4php"          : "^2.3" 
...