Magento 2 update.log vergrößert sich jede Minute erheblich


9

AKTUALISIEREN:

Am Ende habe ich das Dienstprogramm logrotate verwendet, um die ständig wachsenden Protokolldateien zu verarbeiten. Ich habe auch einige Cron-Jobs eingerichtet, die von Zeit zu Zeit nach nicht benötigten temporären Dateien suchen.


Ich habe den Standard Magento 2 Cron konfiguriert und läuft. Nach zwei Tagen sind beim Ausführen einiger Aktionen im Admin-Bereich einige Probleme aufgetreten. Als ich die Serverprotokolle überprüfte, stellte ich fest, dass es sich um ein Speicherplatzproblem handelte. Nach weiteren Untersuchungen stellte ich fest, dass dies update.log.txtder Schuldige ist. Die Dateigröße wurde jede Minute um> 1 MB erhöht. Es gab eine Zeit, in der mehr als 20 GB erreicht wurden.

Geben Sie hier die Bildbeschreibung ein

Ist es normal für ein Standard-Magento 2-Setup? Oder kann und wie kann ich es deaktivieren oder zumindest minimieren?

Dies geschieht sowohl im Entwickler- als auch im Produktionsmodus.

Das Cron-Setup basierte auf diesem Handbuch .

Registerkarte "Cron":

* * * * * <path to php binary> <magento install dir>/bin/magento cron:run | grep -v "Ran jobs by schedule" >> <magento install dir>/var/log/magento.cron.log
* * * * * <path to php binary> <magento install dir>/update/cron.php >> <magento install dir>/var/log/update.cron.log
* * * * * <path to php binary> <magento install dir>/bin/magento setup:cron:run >> <magento install dir>/var/log/setup.cron.log

BEISPIEL INHALT DES LOGS

/var/www/html/setup/src/Magento/Setup/Console/Command/I18nCollectPhrasesCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/MaintenanceStatusCommand.php / var / www / /setup/src/Magento/Setup/Console/Command/BackupCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/DependenciesShowFrameworkCommand.php / var / www / html / setup / src / Mago /Setup/Console/Command/UninstallCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/InfoTimezoneListCommand.php / var / www / html / setup / src / Magento / Setup / Console / Command /MaintenanceAllowIpsCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/ModuleStatusCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/InstallStore / www / html / setup / src / Magento / Setup / Konsole / Befehl / InfoBackupsListCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/MaintenanceDisableCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php / var / www / html / setup / src / Magento / Setup / Konsole / Befehl / InstallCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/UpgradeCommand.php / var / www / html / setup / src / Magento / Setup / Fixtures / IndexersStatesApplyFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/StoresFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/CategoriesFixture.php / var / www / html / setup / src / Magento / Setup / Fixtures / SimpleProductsFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/tax_rates.csv / var / www / html / setup / src / Magento / Setup / Validator / var / www / html / setup / src / Magento / Setup / Validator / DbValidator.php /var/www/html/setup/src/Magento/Setup/Validator/IpValidator.php /var/www/html/setup/src/Magento/Setup/Validator/AdminCredentialsValidator.php / var / www / html / setup / index.php / var / www / html / setup / leistungs-toolkit /var/www/html/setup/performance-toolkit/.htaccess / var / www / html / setup / leistungs-toolkit / profile / var / www / html / setup / performance-toolkit / profile / ce /var/www/html/setup/performance-toolkit/profiles/ce/large.xml /var/www/html/setup/performance-toolkit/profiles/ce/small.xml /var/www/html/setup/performance-toolkit/profiles/ce/medium.xml /var/www/html/setup/performance-toolkit/profiles/ce/extra_large.xml / var / www / html / setup / performance -toolkit / README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx /var/www/html/vendor/.htaccess [] []php /var/www/html/setup/src/Magento/Setup/Validator/AdminCredentialsValidator.php /var/www/html/setup/index.php / var / www / html / setup / performance-toolkit / var / www / HTML / Setup / Performance-Toolkit / .htaccess / var / www / HTML / Setup / Performance-Toolkit / Profile / var / www / HTML / Setup / Performance-Toolkit / Profile / CE / Var / www / HTML / Setup / Performance -toolkit / profile / ce / large.xml /var/www/html/setup/performance-toolkit/profiles/ce/small.xml /var/www/html/setup/performance-toolkit/profiles/ce/medium.xml /var/www/html/setup/performance-toolkit/profiles/ce/extra_large.xml /var/www/html/setup/performance-toolkit/README.txt / var / www / html / setup / performance-toolkit / Benchmark .jmx /var/www/html/vendor/.htaccess [] []php /var/www/html/setup/src/Magento/Setup/Validator/AdminCredentialsValidator.php /var/www/html/setup/index.php / var / www / html / setup / performance-toolkit / var / www / HTML / Setup / Performance-Toolkit / .htaccess / var / www / HTML / Setup / Performance-Toolkit / Profile / var / www / HTML / Setup / Performance-Toolkit / Profile / CE / Var / www / HTML / Setup / Performance -toolkit / profile / ce / large.xml /var/www/html/setup/performance-toolkit/profiles/ce/small.xml /var/www/html/setup/performance-toolkit/profiles/ce/medium.xml /var/www/html/setup/performance-toolkit/profiles/ce/extra_large.xml /var/www/html/setup/performance-toolkit/README.txt / var / www / html / setup / performance-toolkit / Benchmark .jmx /var/www/html/vendor/.htaccess [] []php / var / www / html / setup / leistungs-toolkit /var/www/html/setup/performance-toolkit/.htaccess / var / www / html / setup / leistungs-toolkit / profile / var / www / html / setup / performance-toolkit / profile / ce /var/www/html/setup/performance-toolkit/profiles/ce/large.xml /var/www/html/setup/performance-toolkit/profiles/ce/small.xml / var /www/html/setup/performance-toolkit/profiles/ce/medium.xml /var/www/html/setup/performance-toolkit/profiles/ce/extra_large.xml / var / www / html / setup / performance-toolkit /README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx /var/www/html/vendor/.htaccess [] []php / var / www / html / setup / leistungs-toolkit /var/www/html/setup/performance-toolkit/.htaccess / var / www / html / setup / leistungs-toolkit / profile / var / www / html / setup / performance-toolkit / profile / ce /var/www/html/setup/performance-toolkit/profiles/ce/large.xml /var/www/html/setup/performance-toolkit/profiles/ce/small.xml / var /www/html/setup/performance-toolkit/profiles/ce/medium.xml /var/www/html/setup/performance-toolkit/profiles/ce/extra_large.xml / var / www / html / setup / performance-toolkit /README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx /var/www/html/vendor/.htaccess [] []htaccess / var / www / html / setup / leistungs-toolkit / profile / var / www / html / setup / leistungs-toolkit / profile / ce / var / www / html / setup / leistungs-toolkit / profile / ce / groß. xml /var/www/html/setup/performance-toolkit/profiles/ce/small.xml /var/www/html/setup/performance-toolkit/profiles/ce/medium.xml / var / www / html / setup / Performance-Toolkit / Profile / ce / extra_large.xml /var/www/html/setup/performance-toolkit/README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx / var / www / html / Anbieter / .htaccess [] []htaccess / var / www / html / setup / leistungs-toolkit / profile / var / www / html / setup / leistungs-toolkit / profile / ce / var / www / html / setup / leistungs-toolkit / profile / ce / groß. xml /var/www/html/setup/performance-toolkit/profiles/ce/small.xml /var/www/html/setup/performance-toolkit/profiles/ce/medium.xml / var / www / html / setup / Performance-Toolkit / Profile / ce / extra_large.xml /var/www/html/setup/performance-toolkit/README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx / var / www / html / Anbieter / .htaccess [] []txt /var/www/html/setup/performance-toolkit/benchmark.jmx /var/www/html/vendor/.htaccess [] []txt /var/www/html/setup/performance-toolkit/benchmark.jmx /var/www/html/vendor/.htaccess [] []

Ich habe nur wenige Stellen gefunden, an denen dieses Protokoll generiert / aktualisiert werden könnte:

<INSTALL_DIR>setup\src\Magento\Setup\Console\Command\CronRunCommand.php:
       75      protected function execute(InputInterface $input, OutputInterface $output)
       76      {
       77:         $notification = 'setup-cron: Please check var/log/update.log for execution summary.';
       78  
       79          if (!$this->deploymentConfig->isAvailable()) {

    <INSTALL_DIR>setup\src\Magento\Setup\Model\Cron\ReadinessCheck.php:
      164          $write->writeFile(self::SETUP_CRON_JOB_STATUS_FILE, $resultJson);
      165  
      166:         // write to permanent log file, var/log/update.log
      167          foreach ($errorLogMessages as $errorLog) {
      168              $this->status->add($errorLog, \Psr\Log\LogLevel::ERROR, false);

    <INSTALL_DIR>setup\src\Magento\Setup\Model\Cron\SetupLoggerFactory.php:
       22      {
       23          $logger = new \Monolog\Logger($channelName);
       24:         $path = BP . '/var/log/update.log';
       25          $logger->pushHandler(new \Monolog\Handler\StreamHandler($path));
       26          return $logger;

    <INSTALL_DIR>setup\src\Magento\Setup\Model\Cron\SetupStreamHandler.php:
       17       * @var string
       18       */
       19:     protected $fileName = '/var/log/update.log';
       20  
       21      /**

    <INSTALL_DIR>setup\src\Magento\Setup\Model\Cron\Status.php:
       81          $this->varReaderWriter = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
       82          $this->statusFilePath = $statusFilePath ? $statusFilePath : '.update_status.txt';
       83:         $this->logFilePath = $logFilePath ? $logFilePath : DirectoryList::LOG . '/update.log';
       84          $this->updateInProgressFlagFilePath = $updateInProgressFlagFilePath
       85              ? $updateInProgressFlagFilePath

    <INSTALL_DIR>setup\src\Magento\Setup\Test\Unit\Model\Cron\StatusTest.php:
       71          $this->varReaderWriter->expects($this->any())
       72              ->method('getAbsolutePath')
       73:             ->with('log/update.log')
       74:             ->willReturn('DIR/var/log/update.log');
       75:         $this->assertEquals('DIR/var/log/update.log', $this->status->getLogFilePath());
       76      }
       77  

    <INSTALL_DIR>update\app\code\Magento\Update\CronReadinessCheck.php:
       16      const CRON_JOB_STATUS_FILE = '.update_cronjob_status';
       17  
       18:     const UPDATE_CRON_LOG_FILE = 'var/log/update.log';
       19  
       20      /**#@+
       ..
       91          file_put_contents(MAGENTO_BP . '/var/' . self::CRON_JOB_STATUS_FILE, $resultJson);
       92  
       93:         // If non-accessible paths are found, log an 'error' entry for the same in update.log
       94          if ( !$success && !empty($outputString) ) {
       95              $updateLoggerFactory = new UpdateLoggerFactory();

    <INSTALL_DIR>update\app\code\Magento\Update\Status.php:
       67      ) {
       68          $this->statusFilePath = $statusFilePath ? $statusFilePath : MAGENTO_BP . '/var/.update_status.txt';
       69:         $this->logFilePath = $logFilePath ? $logFilePath : MAGENTO_BP . '/var/log/update.log';
       70          $this->updateInProgressFlagFilePath = $updateInProgressFlagFilePath
       71              ? $updateInProgressFlagFilePath

    <INSTALL_DIR>update\app\code\Magento\Update\UpdateLoggerFactory.php:
       29       */
       30      public function __construct(
       31:         $logFile = '/var/log/update.log',
       32          $channelName = 'update-cron'
       33      ) {

    <INSTALL_DIR>update\cron.php:
       15  $status = new \Magento\Update\Status();
       16  $cronReadinessChecker = new \Magento\Update\CronReadinessCheck();
       17: $notification = 'update-cron: Please check var/log/update.log for execution summary.' . PHP_EOL;
       18  
       19  if (!$cronReadinessChecker->runReadinessCheck()) {

    <INSTALL_DIR>update\dev\tests\integration\testsuite\Magento\Update\StatusTest.php:
       43          $this->statusFilePath = __DIR__ . '/_files/update_status.txt';
       44          $this->tmpStatusFilePath = TESTS_TEMP_DIR . '/update_status.txt';
       45:         $this->tmpStatusLogFilePath = TESTS_TEMP_DIR . '/update.log';
       46          $this->updateInProgressFlagFilePath = TESTS_TEMP_DIR . '/update_in_progress.flag';
       47          $this->updateErrorFlagFilePath = TESTS_TEMP_DIR . '/update_error.flag';

AKTUALISIEREN:

Am Ende habe ich das Dienstprogramm logrotate verwendet, um die ständig wachsenden Protokolldateien zu verarbeiten. Ich habe auch einige Cron-Jobs eingerichtet, die von Zeit zu Zeit nach nicht benötigten temporären Dateien suchen.


1
Ich habe das gleiche Problem mit meinem Geschäft. Meine update.log-Datei war 23g und hat meine MySQL letzte Nacht zum Absturz gebracht. Ich bin mir nicht sicher, was los ist - ich habe eine ziemlich Vanille-Installation.
Budget Woodworker

Antworten:


6

Soweit ich weiß, wird die var/log/update.logDatei tatsächlich mit dem Cron verwendet.

Es ist in deklariert \setup\src\Magento\Setup\Model\Cron\Status.php

$this->logFilePath = $logFilePath ? $logFilePath : DirectoryList::LOG . '/update.log';

Und dann über die getLogFilePath()Methode abgerufen .

Wenn Sie überprüfen, wo diese Methode aufgerufen wird, finden Sie sie unter \setup\src\Magento\Setup\Model\Cron\JobFactory.php:

$logStream = fopen($cronStatus->getLogFilePath(), 'a+');
$streamOutput = new MultipleStreamOutput([$statusStream, $logStream]);

Anschließend wird die $streamOutputVariable als Parameter an die Jobklasse übergeben, zum Beispiel:

return new JobUpgrade(
    $this->serviceLocator->get('Magento\Setup\Console\Command\UpgradeCommand'),
    $objectManagerProvider,
    $streamOutput,
    $this->serviceLocator->get('Magento\Setup\Model\Cron\Queue'),
    $cronStatus,
    $name,
    $params
);

Wenn ich mit diesem Beispiel weitermache, $this->outputwird das in der execute()Methode verwendet:

$this->command->run(new ArrayInput($this->params), $this->output);

Die run()Methode ist in deklariertvendor\symfony\console\Symfony\Component\Console\Command\Command.php

Die $outputVariable wird dann an mehreren Stellen verwendet, z.

    $this->initialize($input, $output);

Ebenso gut wie :

    if ($input->isInteractive()) {
        $this->interact($input, $output);
    }

    $input->validate();

    if ($this->code) {
        $statusCode = call_user_func($this->code, $input, $output);
    } else {
        $statusCode = $this->execute($input, $output);
    }

Ein weiteres interessantes:

        } elseif (OutputInterface::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) {
            $output->writeln('<comment>Install the proctitle PECL to be able to change the process title.</comment>');
        }

Nach diesem letzten Code können bei sehr ausführlichen Parametern einige Dinge geschrieben werden. Vielleicht richten Sie Ihre Cron-Jobs mit ein -vvund deshalb werden Dinge protokolliert.

Dies ist keine eindeutige Antwort, aber Sie sollten der Stapelverfolgung folgen, die ich Ihnen gerade gegeben habe, um das Problem zu untersuchen.


2

Sie haben wahrscheinlich für einige Ordner falsche Berechtigungen festgelegt. / update / cron listet alle Ordner mit falschen Berechtigungen auf

Einfacher Weg ist nur in crontab Update und Setup auskommentieren

#* * * * * <path to php binary> <magento install dir>/update/cron.php >> <magento install dir>/var/log/update.cron.log
#* * * * * <path to php binary> <magento install dir>/bin/magento setup:cron:run >> <magento install dir>/var/log/setup.cron.log

Sie benötigen sie nicht, wenn Sie sie nicht über das Admin-Panel aktualisieren und installieren müssen.

Es ist eine gefährliche Idee für den Produktionsserver. Sie können manuell über Composer auf dem Test- / lokalen Server aktualisieren. Probier es aus; Kopieren Sie dann die Updates auf den Produktionsserver.

Das, was Sie wirklich brauchen, ist

* * * * * <path to php binary> <magento install dir>/bin/magento cron:run | grep -v "Ran jobs by schedule" >> <magento install dir>/var/log/magento.cron.log

Es verwaltet "Indexer, sendet automatisierte E-Mails, generiert die Sitemap usw." - wie in devdocs beschrieben


Ja, dies wurde auch in der Magento 2-Dokumentation zur Konfiguration von cron angegeben. Wie auch immer, wir haben logrotate und einige benutzerdefinierte Cron-Jobs verwendet, die das Dateisystem überprüfen und bereinigen, mit dem Ziel, die Speicherplatznutzung zu optimieren.
Reuelab


0

Wie ich weiß, update.loghandelt es sich um Ihre benutzerdefinierte Protokolldatei, da Magento 2 diese Art von Dateien protokolliert

  • var / log / debug.log - Alle Informationen, die von Psr \ Log \ LoggerInterface :: debug () gespeichert werden, werden dort gespeichert.
  • var / log / exception.log - Alle Ausnahmeinformationen werden dort gespeichert.
  • var / log / system.log - Informationen aus anderen Protokollierungsstufen werden dort gespeichert.

Ich bin nicht sicher, warum es so viele Protokolldaten in Ihrer Datei generiert, dass es sich möglicherweise um einen Syntaxfehler oder ähnliches handelt.

Aber ich würde vorschlagen, einfach mit dem update.login Ihrem Magento 2-Codeverzeichnis zu suchen und dieses Protokoll aus Ihrem Code zu entfernen.


Hallo, danke für die Antwort. Ich glaube nicht, dass es ein benutzerdefiniertes Protokoll ist, da ich es in einigen Standard-Magento-Klassen finden kann. Ich habe meine Frage für weitere Informationen aktualisiert.
Reuelab
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.