Merge pull request #279 from jygaulier/taskLogs

[3.8] Task logs
This commit is contained in:
Romain Neutron
2013-01-21 13:53:10 -08:00
34 changed files with 975 additions and 1855 deletions

View File

@@ -55,7 +55,7 @@ class module_console_schedulerState extends Command
return self::EXITCODE_SETUP_ERROR;
}
$task_manager = new task_manager($this->container);
$task_manager = $this->container['task-manager'];
$exitCode = 0;
$state = $task_manager->getSchedulerState();

View File

@@ -34,7 +34,7 @@ class module_console_schedulerStop extends Command
protected function doExecute(InputInterface $input, OutputInterface $output)
{
try {
$task_manager = new task_manager($this->container);
$task_manager = $this->container['task-manager'];
$task_manager->setSchedulerState(task_manager::STATE_TOSTOP);
return 0;

View File

@@ -70,7 +70,7 @@ class module_console_taskState extends Command
return self::EXITCODE_BAD_ARGUMENT;
}
$task_manager = new task_manager($this->container);
$task_manager = $this->container['task-manager'];
$taskPID = $taskState = NULL;
$exitCode = 0;

View File

@@ -39,7 +39,7 @@ class module_console_tasklist extends Command
}
try {
$task_manager = new task_manager($this->container);
$task_manager = $this->container['task-manager'];
$tasks = $task_manager->getTasks();
if (count($tasks) === 0) {

View File

@@ -10,13 +10,16 @@
*/
use Alchemy\Phrasea\Command\Command;
use Monolog\Handler;
use Monolog\Logger;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Monolog\Handler;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\RotatingFileHandler;
/**
* @todo write tests
*
@@ -44,11 +47,11 @@ class module_console_taskrun extends Command
, task_abstract::RUNNER_MANUAL
);
$this->addOption(
'nolog'
, NULL
, 1 | InputOption::VALUE_NONE
, 'do not log to logfile'
, NULL
'ttyloglevel'
, 't'
, InputOption::VALUE_REQUIRED
, 'threshold : (DEBUG|INFO|WARNING|ERROR|CRITICAL|ALERT)'
, ''
);
$this->setDescription('Run task');
@@ -74,7 +77,8 @@ class module_console_taskrun extends Command
throw new \RuntimeException('Argument must be an Id.');
}
$task_manager = new task_manager($this->container);
$task_manager = $this->container['task-manager'];
$logger = $task_manager->getLogger();
if ($input->getOption('runner') === task_abstract::RUNNER_MANUAL) {
$schedStatus = $task_manager->getSchedulerState();
@@ -93,15 +97,51 @@ class module_console_taskrun extends Command
if ($input->getOption('verbose')) {
$handler = new Handler\StreamHandler(fopen('php://stdout', 'a'));
$handler = new StreamHandler(fopen('php://stdout', 'a'));
$this->container['monolog']->pushHandler($handler);
}
$logfile = __DIR__ . '/../../../../logs/task_' . $task_id . '.log';
$handler = new Handler\RotatingFileHandler($logfile, 10);
$handler = new RotatingFileHandler($logfile, 10);
$this->container['monolog']->pushHandler($handler);
$this->task = $task_manager->getTask($task_id, $this->container['monolog']);
$lib2v = array(
'DEBUG' => task_abstract::LOG_DEBUG,
'INFO' => task_abstract::LOG_INFO,
'WARNING' => task_abstract::LOG_WARNING,
'ERROR' => task_abstract::LOG_ERROR,
'CRITICAL' => task_abstract::LOG_CRITICAL,
'ALERT' => task_abstract::LOG_ALERT
);
$tmpTask = $task_manager->getTask($task_id, null);
$taskname = $tmpTask->getName();
unset($tmpTask);
// log to tty ?
if(($ttyloglevel = strtoupper($input->getOption('ttyloglevel'))) != '') {
if (!array_key_exists($ttyloglevel, $lib2v)) {
throw(new Alchemy\Phrasea\Exception\RuntimeException(sprintf(
"Bad value '%s' for option loglevel\nuse DEBUG|INFO|WARNING|ERROR|CRITICAL|ALERT", $ttyloglevel))
);
}
$handler = new Handler\StreamHandler(
"php://stdout",
$lib2v[$ttyloglevel],
true
);
$logger->pushHandler($handler);
}
$logfile = __DIR__ . '/../../../../logs/task_' . $task_id . '.log';
$handler = new RotatingFileHandler($logfile, 10);
$logger->pushHandler($handler);
$this->task = $task_manager->getTask($task_id, $logger);
register_tick_function(array($this, 'tick_handler'), true);
declare(ticks = 1);