Magento 2 update.log เพิ่มขนาดที่สำคัญทุกนาที


9

UPDATE:

ฉันลงเอยด้วยการใช้ยูทิลิตี logrotate เพื่อจัดการไฟล์บันทึกที่กำลังเติบโต ฉันยังตั้งค่างาน cron ไม่กี่แห่งที่จะตรวจสอบไฟล์ชั่วคราวที่ไม่จำเป็นเป็นครั้งคราว


ฉันมี Magento 2 cron มาตรฐานที่กำหนดค่าและทำงานอยู่ หลังจากสองวันฉันพบปัญหาบางอย่างในขณะที่ทำงานบางอย่างในแผงควบคุมระบบ เมื่อฉันตรวจสอบบันทึกเซิร์ฟเวอร์ฉันพบว่าเป็นปัญหาพื้นที่ดิสก์ หลังจากการสอบสวนเพิ่มเติมฉันพบว่านี่update.log.txtเป็นผู้กระทำผิด ขนาดไฟล์เพิ่มขึ้น> 1MB ทุกนาที มีเวลาถึงมากกว่า 20GB

ป้อนคำอธิบายรูปภาพที่นี่

เป็นเรื่องปกติสำหรับการตั้งค่า Magento 2 แบบมาตรฐานหรือไม่? หรือฉันสามารถปิดการใช้งานหรืออย่างน้อยก็สามารถย่อขนาดมันได้?

มันเกิดขึ้นกับทั้งผู้พัฒนาและโหมดการผลิต

การตั้งค่า Cron นั้นเป็นไปตามคู่มือนี้

แท็บ 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

ตัวอย่างเนื้อหาของบันทึก

/var/www/html/setup/src/Magento/Setup/Console/Command/I18nCollectPhrasesCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/MaintenanceStatusCommand.php/html /setup/src/Magento/Setup/Console/Command/BackupCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/DependenciesShowFrameworkCommand.php / var / www / html / setup / src / Magc/ /Setup/Console/Command/UninstallCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/InfoTimezoneListCommand.php / var / www / html / setup / src / Magento / การติดตั้ง / คอนโซล / คำสั่ง ไฟล์ / www / html / การตั้งค่า / src / วีโอไอพี / ติดตั้ง / คอนโซล / คำสั่ง / InfoBackupsListCommandphp /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/Magento/Setup/Console/Command/DiCompileCommand/php 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/html/setup/src/Magento/Setup/Furniture var / www / html / setup / src / Magento / ตั้งค่า / ติดตั้ง / 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 / DbValidatorphp /var/www/html/setup/src/Magento/Setup/Validator/IpValidator.php /var/www/html/setup/src/Magento/Setup/Validator/AdminCredentialsValidator.Vp / var / www / html / การตั้งค่า / index.php / var / www / html / setup / performance-toolkit /var/www/html/setup/performance-toolkit/.htaccess / var / www / html / การตั้งค่า / ชุดเครื่องมือประสิทธิภาพ / โปรไฟล์ / var / www / html / setup / performance-toolkit / profiles / 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 / การตั้งค่า / ประสิทธิภาพ -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 / การตั้งค่า / ชุดเครื่องมือ - ประสิทธิภาพ html / setup / performance-toolkit / .htaccess / var / www / html / setup / performance-toolkit / profiles / var / www / html / setup / performance-toolkit / profiles / 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 / การตั้งค่า / ชุดเครื่องมือประสิทธิภาพ / มาตรฐาน .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 / การตั้งค่า / ชุดเครื่องมือ - ประสิทธิภาพ html / setup / performance-toolkit / .htaccess / var / www / html / setup / performance-toolkit / profiles / var / www / html / setup / performance-toolkit / profiles / 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 / การตั้งค่า / ชุดเครื่องมือประสิทธิภาพ / มาตรฐาน .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 / profiles / var / www / html / setup / performance-toolkit / profiles / 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 / profiles / var / www / html / setup / performance-toolkit / profiles / 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 / profiles / var / www / html / setup / performance-toolkit / profiles / ce / var / www / html / setup / performance-toolkit / profiles / ce / ขนาดใหญ่ 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 / ผู้ขาย / .htaccess [] []htaccess / var / www / html / setup / performance-toolkit / profiles / var / www / html / setup / performance-toolkit / profiles / ce / var / www / html / setup / performance-toolkit / profiles / ce / ขนาดใหญ่ 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 / ผู้ขาย / .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 [] []

ฉันพบสถานที่ไม่กี่แห่งที่อาจมีการสร้าง / อัปเดตบันทึกนี้:

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

UPDATE:

ฉันลงเอยด้วยการใช้ยูทิลิตี logrotate เพื่อจัดการไฟล์บันทึกที่กำลังเติบโต ฉันยังตั้งค่างาน cron ไม่กี่แห่งที่จะตรวจสอบไฟล์ชั่วคราวที่ไม่จำเป็นเป็นครั้งคราว


1
ฉันมีปัญหาเดียวกันกับร้านค้าของฉัน ไฟล์ update.log ของฉันมีน้ำหนัก 23 กรัมและทำให้ mysql ของฉันพังเมื่อคืน ฉันไม่แน่ใจว่าเกิดอะไรขึ้น - ฉันมีการติดตั้งวานิลลาค่อนข้าง
Budget Woodworker

คำตอบ:


6

เท่าที่ฉันรู้var/log/update.logไฟล์ที่ใช้กับ cron แน่นอน

มันถูกประกาศใน \setup\src\Magento\Setup\Model\Cron\Status.php

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

แล้วดึงข้อมูลด้วยgetLogFilePath()วิธีการ

หากคุณตรวจสอบว่ามีการเรียกใช้วิธีนี้ที่ใดอยู่ภายใต้\setup\src\Magento\Setup\Model\Cron\JobFactory.php:

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

จากนั้น$streamOutputตัวแปรจะถูกส่งเป็นพารามิเตอร์ไปยังคลาสงานตัวอย่างเช่น:

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

ถ้าฉันจะไปกับตัวอย่างนี้$this->outputจะใช้ในexecute()วิธีการ:

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

มีrun()การประกาศวิธีการvendor\symfony\console\Symfony\Component\Console\Command\Command.php

$outputตัวแปรที่ใช้แล้วในหลายสถานที่เช่น:

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

เช่นเดียวกับ:

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

อีกหนึ่งที่น่าสนใจ:

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

ตามรหัสสุดท้ายนี้บางสิ่งสามารถเขียนได้ในกรณีที่พารามิเตอร์ verbose มาก บางทีคุณอาจตั้งค่างาน cron ของคุณด้วย-vvและนั่นคือสาเหตุที่สิ่งต่าง ๆ ถูกบันทึกไว้

นี่ไม่ใช่คำตอบที่แน่นอน แต่คุณควรทำตามการติดตามสแต็กที่ฉันเพิ่งให้คุณตรวจสอบปัญหา


2

คุณอาจตั้งค่าการอนุญาตที่ไม่ถูกต้องในบางโฟลเดอร์ / update / cron แสดงรายการโฟลเดอร์ทั้งหมดที่มีการอนุญาตที่ไม่ถูกต้อง

วิธีที่ง่ายคือเพียงแสดงความคิดเห็นในการปรับปรุงและตั้งค่า 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

คุณไม่จำเป็นต้องใช้พวกเขาหากคุณไม่จำเป็นต้องอัปเดตและติดตั้งจากแผงผู้ดูแลระบบ

มันเป็นความคิดที่อันตรายสำหรับเซิร์ฟเวอร์ที่ใช้งานจริง คุณสามารถอัปเดตด้วยตนเองผ่านผู้แต่งในเซิร์ฟเวอร์ทดสอบ / โลคัล ทดสอบมัน; จากนั้นคัดลอกอัพเดตไปยังเซิร์ฟเวอร์ที่ใช้งานจริง

สิ่งที่คุณต้องการจริงๆคือ

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

จัดการ "ตัวสร้างดัชนีส่งอีเมลอัตโนมัติสร้างแผนผังไซต์และอื่น ๆ " - ตามที่อธิบายไว้ใน devdocs


ใช่สิ่งนี้ยังระบุไว้ในเอกสารประกอบของ Magento 2 สำหรับการกำหนดค่า cron อย่างไรก็ตามเราลงเอยด้วยการใช้ logrotate และงาน cron แบบกำหนดเองซึ่งตรวจสอบและล้างระบบไฟล์โดยมีเป้าหมายเพื่อเพิ่มประสิทธิภาพการใช้พื้นที่ดิสก์
reuelab

1

/var/log/update.logเป็นแฟ้มบันทึก cron permission issueและปัญหานี้โดยเฉพาะอย่างยิ่งมาเมื่อคุณมีไฟล์ "นี่คือสิ่งที่ฉันได้รับในกรณีของฉันเมื่อฉันเปิดไฟล์นั้น"

และนี่อาจเป็นการแก้ไข: https://community.bitnami.com/t/update-log-file-grows-rapidly-in-magento-2-1-1/49253/6

คุณต้องกำหนดสิทธิ์ที่ถูกต้องและความเป็นเจ้าของให้กับไดเรกทอรีและไฟล์ของ Magento


0

อย่างที่ฉันรู้update.logคือไฟล์บันทึกที่กำหนดเองของคุณเพราะ Magento 2 สร้างไฟล์ประเภทนี้

  • var / log / debug.log - ข้อมูลทั้งหมดที่บันทึกโดย Psr \ Log \ LoggerInterface :: debug () ถูกเก็บไว้ที่นั่น
  • var / log / exception.log - ข้อมูลข้อยกเว้นทั้งหมดจะถูกเก็บไว้ที่นั่น
  • var / log / system.log - ข้อมูลจากระดับการบันทึกอื่น ๆ จะถูกบันทึกไว้ที่นั่น

ฉันไม่แน่ใจว่าทำไมมันสร้างข้อมูลบันทึกจำนวนมากในไฟล์ของคุณอาจมีข้อผิดพลาดทางไวยากรณ์หรืออะไรทำนองนั้น

แต่ฉันขอแนะนำเพียงแค่ค้นหาด้วยupdate.logในไดเรกทอรีรหัส Magento 2 ของคุณและลบบันทึกนั้นออกจากรหัสของคุณ


สวัสดีขอบคุณที่ตอบ ฉันไม่คิดว่ามันเป็นบันทึกที่กำหนดเองเพราะฉันสามารถหาได้จาก Magento Classes ที่เป็นค่าเริ่มต้น ฉันได้อัปเดตคำถามของฉันสำหรับข้อมูลเพิ่มเติม
reuelab
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.