mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
More verbose file migration logging
See https://github.com/silverstripeltd/open-sourcerers/issues/91 * Add `PreformattedEchoHandler` cherry-picked from 4c3f3e6bea99b46b689e5b23d1bd1498a4ac696c * Batch log messages for every 100 file. Also make logger work for stdout * Update src/Logging/PreformattedEchoHandler.php Co-Authored-By: bergice <bergice@users.noreply.github.com>
This commit is contained in:
parent
e95dde8f1e
commit
2bcf8b5ff3
@ -2,7 +2,13 @@
|
||||
|
||||
namespace SilverStripe\Dev\Tasks;
|
||||
|
||||
use Monolog\Handler\StreamHandler;
|
||||
use Monolog\Logger;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use SilverStripe\AssetAdmin\Helper\ImageThumbnailHelper;
|
||||
use SilverStripe\Control\Director;
|
||||
use SilverStripe\Core\Injector\Injector;
|
||||
use SilverStripe\Logging\PreformattedEchoHandler;
|
||||
use SilverStripe\ORM\DB;
|
||||
use SilverStripe\Assets\FileMigrationHelper;
|
||||
use SilverStripe\Dev\BuildTask;
|
||||
@ -12,7 +18,6 @@ use SilverStripe\Dev\BuildTask;
|
||||
*/
|
||||
class MigrateFileTask extends BuildTask
|
||||
{
|
||||
|
||||
private static $segment = 'MigrateFileTask';
|
||||
|
||||
protected $title = 'Migrate File dataobjects from 3.x';
|
||||
@ -23,6 +28,8 @@ class MigrateFileTask extends BuildTask
|
||||
|
||||
public function run($request)
|
||||
{
|
||||
$this->addLogHandlers();
|
||||
|
||||
if (!class_exists(FileMigrationHelper::class)) {
|
||||
DB::alteration_message("No file migration helper detected", "notice");
|
||||
return;
|
||||
@ -46,4 +53,22 @@ class MigrateFileTask extends BuildTask
|
||||
}
|
||||
ImageThumbnailHelper::singleton()->run();
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO Refactor this whole mess into Symfony Console on a TaskRunner level,
|
||||
* with a thin wrapper to show coloured console output via a browser:
|
||||
* https://github.com/silverstripe/silverstripe-framework/issues/5542
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function addLogHandlers()
|
||||
{
|
||||
if ($logger = Injector::inst()->get(LoggerInterface::class)) {
|
||||
if (Director::is_cli()) {
|
||||
$logger->pushHandler(new StreamHandler('php://stdout'));
|
||||
$logger->pushHandler(new StreamHandler('php://stderr', Logger::WARNING));
|
||||
} else {
|
||||
$logger->pushHandler(new PreformattedEchoHandler());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
27
src/Logging/PreformattedEchoHandler.php
Normal file
27
src/Logging/PreformattedEchoHandler.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace SilverStripe\Logging;
|
||||
|
||||
use Monolog\Handler\AbstractProcessingHandler;
|
||||
|
||||
/**
|
||||
* Echo the output as preformatted HTML, emulating console output in a browser.
|
||||
* Tiding us over until we can properly decoupled web from CLI output.
|
||||
* Do not use this API outside of core modules,
|
||||
* it'll likely be removed as part of a larger refactor.
|
||||
*
|
||||
* See https://github.com/silverstripe/silverstripe-framework/issues/5542
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class PreformattedEchoHandler extends AbstractProcessingHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* @param array $record
|
||||
*/
|
||||
protected function write(array $record)
|
||||
{
|
||||
echo sprintf('<pre>%s</pre>', htmlspecialchars($record['formatted'], ENT_QUOTES, 'UTF-8'));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user