Merge pull request #21705 from owncloud/improve-background-job-message

Improve background job error message
This commit is contained in:
Thomas Müller 2016-01-15 20:12:26 +01:00
commit 807cf750b3
4 changed files with 20 additions and 6 deletions

View File

@ -52,7 +52,10 @@ abstract class Job implements IJob {
$this->run($this->argument);
} catch (\Exception $e) {
if ($logger) {
$logger->error('Error while running background job: ' . $e->getMessage());
$logger->logException($e, [
'app' => 'core',
'message' => 'Error while running background job (class: ' . get_class($this) . ', arguments: ' . print_r($this->argument, true) . ')'
]);
}
}
}

View File

@ -285,6 +285,8 @@ class Log implements ILogger {
'Line' => $exception->getLine(),
);
$exception['Trace'] = preg_replace('!(login|checkPassword)\(.*\)!', '$1(*** username and password replaced ***)', $exception['Trace']);
$this->error('Exception: ' . json_encode($exception), $context);
$msg = isset($context['message']) ? $context['message'] : 'Exception';
$msg .= ': ' . json_encode($exception);
$this->error($msg, $context);
}
}

View File

@ -125,6 +125,14 @@ interface ILogger {
/**
* Logs an exception very detailed
* An additional message can we written to the log by adding it to the
* context.
*
* <code>
* $logger->logException($ex, [
* 'message' => 'Exception during cron job execution'
* ]);
* </code>
*
* @param \Exception $exception
* @param array $context

View File

@ -18,8 +18,9 @@ class Job extends \Test\TestCase {
public function testRemoveAfterException() {
$jobList = new DummyJobList();
$job = new TestJob($this, function () {
throw new \Exception();
$e = new \Exception();
$job = new TestJob($this, function () use ($e) {
throw $e;
});
$jobList->add($job);
@ -27,8 +28,8 @@ class Job extends \Test\TestCase {
->disableOriginalConstructor()
->getMock();
$logger->expects($this->once())
->method('error')
->with('Error while running background job: ');
->method('logException')
->with($e);
$this->assertCount(1, $jobList->getAll());
$job->execute($jobList, $logger);