Update Magento 2.log meningkatkan ukuran signifikan setiap menit


9

MEMPERBARUI:

Saya akhirnya menggunakan utilitas logrotate untuk menangani file log yang terus tumbuh. Saya juga mengatur beberapa tugas cron yang akan memeriksa file sementara yang tidak dibutuhkan dari waktu ke waktu.


Saya memiliki cron Magento 2 standar yang dikonfigurasi dan dijalankan. Setelah dua hari, saya mengalami beberapa masalah saat menjalankan beberapa tindakan di panel Admin. Ketika saya memeriksa log server, saya menemukan bahwa itu adalah masalah ruang disk. Setelah diselidiki lebih lanjut, saya mengetahui bahwa ini update.log.txtadalah pelakunya. Ukuran file meningkat> 1MB setiap menit. Ada saatnya mencapai lebih dari 20GB.

masukkan deskripsi gambar di sini

Apakah normal untuk pengaturan Magento 2 standar? Atau bisakah & bagaimana saya bisa menonaktifkannya atau setidaknya menguranginya?

Ini terjadi pada mode pengembang dan produksi.

Pengaturan Cron didasarkan pada panduan ini .

Tab 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

ISI SAMPEL LOG

/var/www/html/setup/src/Magento/Setup/Console/Command/I18nCollectPhrasesCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/MaintenanceStatusCommand.php / var / www / har / 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 / 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/htup/src/Magento/Setup/Console/Command/InstallConfiguration.configuration / www / html / setup / src / Magento / Setup / Console / Command / InfoBackupsListCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/MaintenanceDisableCommand.php /var/www/ht//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 / Setup / Fixtures / IndexersStatesApplyFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/StoresFixture.php /var/www/htup/src/Magento/Setup/Fixture/CategoriesFixture.php / var / www / html / setup / src / Magento / Setup / Jadwal / 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/htup/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 / profil / var / www / html / setup / performance-toolkit / profil / 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 / kinerja -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 / profil / var / www / html / setup / performance-toolkit / profil / ce / var / www / html / setup / kinerja -toolkit / profil / 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 / profil / var / www / html / setup / performance-toolkit / profil / ce / var / www / html / setup / kinerja -toolkit / profil / 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 / profil / var / www / html / setup / performance-toolkit / profil / 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/htup/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 / profil / var / www / html / setup / performance-toolkit / profil / 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/htup/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 / profil / var / www / html / setup / performance-toolkit / profil / ce / var / www / html / setup / performance-toolkit / profil / ce / besar. 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 / profil / 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 / profil / var / www / html / setup / performance-toolkit / profil / ce / var / www / html / setup / performance-toolkit / profil / ce / besar. 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 / profil / 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 [] []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 [] []

Saya menemukan beberapa tempat di mana log ini mungkin dihasilkan / diperbarui:

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

MEMPERBARUI:

Saya akhirnya menggunakan utilitas logrotate untuk menangani file log yang terus tumbuh. Saya juga mengatur beberapa tugas cron yang akan memeriksa file sementara yang tidak dibutuhkan dari waktu ke waktu.


1
Saya mengalami masalah yang sama dengan toko saya. File update.log saya 23g dan benar-benar crash mysql saya tadi malam. Saya tidak yakin apa yang terjadi - saya memiliki instalasi vanili yang cukup.
Pekerja Kayu Anggaran

Jawaban:


6

Sejauh yang saya tahu, var/log/update.logfile tersebut memang digunakan dengan cron.

Dinyatakan dalam \setup\src\Magento\Setup\Model\Cron\Status.php

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

Dan kemudian diambil melalui getLogFilePath()metode ini.

Jika Anda memeriksa di mana metode ini dipanggil, itu berada di bawah \setup\src\Magento\Setup\Model\Cron\JobFactory.php:

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

Kemudian $streamOutputvariabel dilewatkan sebagai parameter ke kelas pekerjaan, misalnya:

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

Jika saya terus menggunakan contoh ini, $this->outputdigunakan dalam execute()metode:

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

The run()dideklarasikan divendor\symfony\console\Symfony\Component\Console\Command\Command.php

The $outputvariabel kemudian digunakan di beberapa tempat seperti:

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

Sebaik :

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

Satu lagi yang menarik:

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

Menurut kode terakhir ini, beberapa hal dapat ditulis jika parameternya sangat verbose. Mungkin Anda mengatur pekerjaan cron Anda -vvdan itulah sebabnya hal-hal semakin dicatat.

Ini bukan jawaban yang pasti, tetapi Anda harus mengikuti jejak tumpukan yang baru saja saya berikan kepada Anda untuk menyelidiki masalah ini.


2

Anda mungkin menetapkan izin yang salah pada beberapa folder. / perbarui / cron mendaftar semua folder dengan izin salah

Cara mudah hanyalah berkomentar di pembaruan dan pengaturan crontab

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

Anda tidak memerlukannya jika Anda tidak perlu memperbarui dan menginstal dari panel admin.

Itu ide berbahaya untuk server produksi. Anda dapat memperbarui secara manual melalui komposer pada server uji / lokal; menguji; kemudian salin pembaruan ke server produksi.

Yang Anda butuhkan adalah

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

Ia mengelola "pengindeks, mengirim email otomatis, menghasilkan peta situs, dan sebagainya" - seperti yang dijelaskan dalam devdocs


Ya, ini juga ditunjukkan dalam dokumentasi Magento 2 untuk mengkonfigurasi cron. Bagaimanapun kami akhirnya menggunakan logrotate dan beberapa pekerjaan cron khusus, yang memeriksa dan membersihkan sistem file, dengan tujuan untuk mengoptimalkan penggunaan ruang disk.
reuelab


0

Seperti yang saya tahu update.logadalah file log kustom Anda karena Magento 2 menghasilkan log file jenis ini

  • var / log / debug.log - semua informasi yang disimpan oleh Psr \ Log \ LoggerInterface :: debug () disimpan di sana.
  • var / log / exception.log - semua informasi pengecualian disimpan di sana.
  • var / log / system.log - informasi dari level logging lainnya disimpan di sana.

Saya tidak yakin mengapa ini menghasilkan begitu banyak data log di file Anda mungkin ada beberapa kesalahan sintaks atau sesuatu seperti itu.

Tapi saya sarankan hanya mencari dengan update.logdengan di direktori kode Magento 2 Anda dan menghapus log itu dari kode Anda.


Hai, Terima kasih telah menjawab. Saya tidak berpikir ini log khusus, karena saya dapat menemukannya di beberapa Kelas Magento default. Saya telah memperbarui pertanyaan saya untuk informasi lebih lanjut.
reuelab
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.