Closed exru closed 9 years ago
If you want to see log in realtime probably you have to configure Logger as describe here
права проверяйте, кто крон запускает
какой нафиг крон, яж написал php yii worker &
от какого юзера? php запускаете? от себя?
да
sudo php ... так проверьте
@exru для таких вопросов лучше использовать форум, например, русский Здесь issue/bug tracker
я так пинмаю в настройках yii\log\FileTarget нет способа пробросить traceLevel, когда класс создается по умолчанию с нулевым уровнем static::createObject('yii\log\Logger');
мне форум не нужен реально не работают логи, можете посмотреть здесь https://translate.google.ru/?hl=ru&tab=wT#en/ru/issue
@exru ты попробовал сделать как я кинул ссылку на рецепт. По умолчанию логер записывает все в файл когда достигнут лимит пачки.
/**
* @var integer how many messages should be logged before they are flushed from memory and sent to targets.
* Defaults to 1000, meaning the [[flush]] method will be invoked once every 1000 messages logged.
* Set this property to be 0 if you don't want to flush messages until the application terminates.
* This property mainly affects how much memory will be taken by the logged messages.
* A smaller value means less memory, but will increase the execution time due to the overhead of [[flush()]].
*/
public $flushInterval = 1000;
Также можешь ради эксперимента поставить 777 на папку с логами, если начнут писаться, то проблема в правах.
Пробовал. Не в правах дело, а в том что создается класс static::createObject('yii\log\Logger'); с public $traceLevel = 0, но в yii\log\FileTarget, нет такой опции типа defaultTraceLevel. Файлы прекрасно пишутся через fwrite('log.txt','a+'); И то что ты сбросил попробовал, тож самое, но спасибо.
причем тут traceLevel, если ты говоришь, что лог в принципе не пишется. traceLevel задается в конфиге
'log' => [
'traceLevel' => 0,
'flushInterval' => 1,
'targets' => require(__DIR__ . '/logger.php')
],
По коду явно видно, что запись сообщений в target никак не связана с targetLevel.
public function log($message, $level, $category = 'application')
{
$time = microtime(true);
$traces = [];
// по умолчанию данное условие не сработает и в лог просто не будет добавлена trace информация
if ($this->traceLevel > 0) {
$count = 0;
$ts = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
array_pop($ts); // remove the last trace since it would be the entry script, not very useful
foreach ($ts as $trace) {
if (isset($trace['file'], $trace['line']) && strpos($trace['file'], YII2_PATH) !== 0) {
unset($trace['object'], $trace['args']);
$traces[] = $trace;
if (++$count >= $this->traceLevel) {
break;
}
}
}
}
// а вот тут уже идет проверка что достигнут предел после которого следует послать сообщения в target
$this->messages[] = [$message, $level, $category, $time, $traces];
if ($this->flushInterval > 0 && count($this->messages) >= $this->flushInterval) {
$this->flush();
}
}
Предлагаю тебе все же продолжит обсуждение твоей проблемы на форуме т.к. с точки зрения фреймворка все работает корректно и проблема кроется в окружении/конфигурации
ok
Решил написать демона под gearman, столкнулся с проблемой логирования: