Magento 2 update.log, her dakika önemli boyutu artırır


9

GÜNCELLEME:

Sürekli büyüyen günlük dosyalarını işlemek için logrotate yardımcı programını kullandım. Ayrıca zaman zaman gereksiz geçici dosyaları kontrol edecek birkaç cron işi ayarladım.


Standart Magento 2 cron yapılandırılmış ve çalışıyor. İki gün sonra Yönetici panelinde bazı işlemleri gerçekleştirirken bazı sorunlarla karşılaştım. Sunucu günlüklerini kontrol ettiğimde, bunun bir disk alanı sorunu olduğunu öğrendim. Daha fazla araştırmanın ardından update.log.txtbunun suçlu olduğunu öğrendim . Dosya boyutu her dakika> 1 MB artıyordu. 20GB'ın üzerine çıktığı bir zaman vardı.

resim açıklamasını buraya girin

Standart bir Magento 2 kurulumu normal mi? Veya devre dışı bırakabilir miyim veya en azından küçültebilir miyim?

Hem geliştirici hem de üretim modunda olur.

Cron kurulumu bu kılavuza dayanıyordu .

Cron sekmesi:

* * * * * <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

LOGUN ÖRNEK İÇERİĞİ

/var/www/html/setup/src/Magento/Setup/Console/Command/I18nCollectPhrasesCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/MaintenanceStatusCommand.php / var / www / h / h / /setup/src/Magento/Setup/Console/Command/BackupCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/DependenciesShowFrameworkCommand.php / var / www / html / setup / src / Magento /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.figConfiguration / www / html / setup / src / Magento / Kurulum / Konsol / Command / 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 / Console / Command / InstallCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/UpgradeCommand.php / var / www / html / setup / src / Magento / Kurulum / Armatürler / DizinleyicilerStatesApplyFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/StoresFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/Store/Fixtures/CategoriesFixture.php / var / www / html / setup / src / Magento / Kurulum / Fikstür / SimpleProductsFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/tax_rates.csv / var / www / html / setup / src / Magento / Kurulum / Doğrulayıcı / var / www / html / setup / src / Magento / Kurulum / Doğrulayıcı / 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 / performance-toolkit /var/www/html/setup/performance-toolkit/.htaccess / var / www / html / setup / performance-toolkit / profilleri / var / www / html / setup / performance-toolkit / profiller / 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 / profiller / var / www / html / setup / performance-toolkit / profiller / ce / var / www / html / setup / performance -toolkit / profiller / 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 / profiller / var / www / html / setup / performance-toolkit / profiller / ce / var / www / html / setup / performance -toolkit / profiller / 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 / performance-toolkit /var/www/html/setup/performance-toolkit/.htaccess / var / www / html / setup / performance-toolkit / profilleri / var / www / html / setup / performance-toolkit / profiller / 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 / performance-toolkit /var/www/html/setup/performance-toolkit/.htaccess / var / www / html / setup / performance-toolkit / profilleri / var / www / html / setup / performance-toolkit / profiller / 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 / performance-toolkit / profilleri / var / www / html / setup / performance-toolkit / profilleri / ce / var / www / html / setup / performance-toolkit / profilleri / 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 / profiller / ce / extra_large.xml /var/www/html/setup/performance-toolkit/README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx / var / www / html / satıcı / .htaccess [] []htaccess / var / www / html / setup / performance-toolkit / profilleri / var / www / html / setup / performance-toolkit / profilleri / ce / var / www / html / setup / performance-toolkit / profilleri / 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 / profiller / ce / extra_large.xml /var/www/html/setup/performance-toolkit/README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx / var / www / html / satıcı / .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 [] []

Bu günlüğün oluşturulabileceği / güncellenebileceği birkaç yer buldum:

<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';

GÜNCELLEME:

Sürekli büyüyen günlük dosyalarını işlemek için logrotate yardımcı programını kullandım. Ayrıca zaman zaman gereksiz geçici dosyaları kontrol edecek birkaç cron işi ayarladım.


1
Mağazamla da aynı sorunu yaşıyorum. Update.log dosyam 23g idi ve aslında dün gece MySQL çöktü. Neler olup bittiğinden emin değilim - oldukça vanilya kurulumum var.
Budget Woodworker

Yanıtlar:


6

Bildiğim kadarıyla, var/log/update.logdosya gerçekten cron ile kullanılır.

İlan edildi \setup\src\Magento\Setup\Model\Cron\Status.php

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

Ve sonra getLogFilePath()yöntemle geri alındı .

Bu yöntemin nerede çağrıldığını kontrol ederseniz \setup\src\Magento\Setup\Model\Cron\JobFactory.php:

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

Sonra $streamOutputdeğişken iş sınıfına parametre olarak iletilir, örneğin:

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

Bu örnek ile devam ederseniz $this->output, execute()yöntemde kullanılır :

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

run()Yöntem bildirilmiştirvendor\symfony\console\Symfony\Component\Console\Command\Command.php

$outputDaha sonra değişken gibi çeşitli yerlerde kullanılır:

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

Hem de :

    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);
    }

Bir başka ilginç olan:

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

Bu son koda göre, çok ayrıntılı parametre durumunda bazı şeyler yazılabilir. Belki cron işlerinizi kuruyorsunuz -vvve bu yüzden işler günlüğe kaydediliyor.

Bu kesin bir cevap değil, ama sorunu araştırmanız için size verdiğim yığın izlemesini takip etmelisiniz.


2

Muhtemelen bazı klasörlerde yanlış izinler ayarladınız. / update / cron yanlış izinlere sahip tüm klasörleri listeler

Kolay yol sadece crontab güncellemesi ve kurulumunda yorum yapmaktır

#* * * * * <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

Yönetici panelinden güncellemeniz ve yüklemeniz gerekmiyorsa bunlara ihtiyacınız yoktur.

Üretim sunucusu için tehlikeli bir fikir. Test / yerel sunucudaki besteci ile manuel olarak güncelleme yapabilirsiniz; Dene; ardından güncellemeleri üretim sunucusuna kopyalayın.

Gerçekten ihtiyacın olan

* * * * * <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

"Endeksleyicileri yönetir, otomatik e-postalar gönderir, site haritasını oluşturur, vb." - devdocs'ta açıklandığı gibi


Evet, bu aynı zamanda cron yapılandırması için Magento 2 belgelerinde de belirtilmiştir. Her neyse, disk alanı kullanımını optimize etmek amacıyla logrotate ve dosya sistemini kontrol eden ve temizleyen bazı özel cron işleri kullandık.
reuelab


0

Bildiğim kadarıyla update.logözel günlük dosyanız olduğunu biliyorum çünkü Magento 2 günlük bu tür dosyaları oluşturmak

  • var / log / debug.log - Psr \ Log \ LoggerInterface :: debug () tarafından kaydedilen tüm bilgiler burada saklanır.
  • var / log / exception.log - tüm istisna bilgileri orada saklanır.
  • var / log / system.log - diğer günlük düzeylerinden gelen bilgiler oraya kaydedilir.

Neden dosyanızda bu kadar çok günlük verisi oluşturduğundan emin değilim bazı sözdizimi hatası veya bunun gibi bir şey olabilir.

Ama ben sadece update.logMagento 2 kod dizini ile ile arama ve kodunuzdan bu günlük kaldırmak öneririz.


Merhaba, Cevap verdiğiniz için teşekkürler. Ben onun özel bir günlük sanmıyorum, çünkü ben bazı varsayılan Magento Sınıfları bulabilirsiniz. Daha fazla bilgi için sorumu güncelledim.
reuelab
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.