Magento 2. update.log tăng kích thước đáng kể mỗi phút


9

CẬP NHẬT:

Tôi đã kết thúc bằng cách sử dụng tiện ích logrotate để xử lý các tệp nhật ký ngày càng phát triển. Thỉnh thoảng tôi cũng thiết lập một số công việc định kỳ sẽ kiểm tra các tệp tạm thời không cần thiết.


Tôi có cron Magento 2 tiêu chuẩn được cấu hình và chạy. Sau hai ngày, tôi gặp một số vấn đề trong khi chạy một số hành động trong bảng Quản trị. Khi tôi kiểm tra nhật ký máy chủ, tôi phát hiện ra rằng đó là sự cố không gian đĩa. Sau khi điều tra thêm, tôi phát hiện ra rằng đây update.log.txtlà thủ phạm. Kích thước tệp đã tăng> 1MB mỗi phút. Đã có lúc nó đạt hơn 20GB.

nhập mô tả hình ảnh ở đây

Có phải là bình thường cho một thiết lập Magento 2 tiêu chuẩn? Hoặc có thể & làm thế nào tôi có thể vô hiệu hóa nó hoặc ít nhất là giảm thiểu nó?

Nó xảy ra cho cả nhà phát triển và chế độ sản xuất.

Thiết lập cron được dựa trên hướng dẫn này .

Thẻ 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

MẪU NỘI DUNG CỦA LOG

/var/www/html/setup/src/Magento/setup/Console/Command/I18nCollectPhTHERCommand.php /var/www/html/setup/src/Magento/setup/Console/Command/Maint /setup/src/Magento/setup/Console/Command/BackupCommand.php /var/www/html/setup/src/Magento/setup/Console/Command/DependenciesShowFrameworkCommand.php / var / www / /Setup/Console/Command/UninstallCommand.php /var/www/html/setup/src/Magento/setup/Console/Command/InfoTimezoneListCommand.php / var / www / html / setup / src / Magento / Setup / Console /Maintenance ALLowIpsCommand.php /var/www/html/setup/src/Magento/setup/Console/Command/ModuleStatusCommand.php /var/www/html/setup/src/Magento/setup/ons / www / html / setup / src / Magento / Setup / Console / Command / InfoBackupsListCommand.php /var/www/html/setup/src/Magento/setup/Console/Command/MaintenanceDisableCommand.php /var/www/html/setup/src/Magento/setup/Console/Command/DiCileCompand html / setup / src / Magento / Setup / Console / Command / InstallCommand.php /var/www/html/setup/src/Magento/setup/Console/Command/UpTHERCommand.php / var / www / html / setup / src / Magento / Setup / Fixture / IndexersStatesApplyFixture.php /var/www/html/setup/src/Magento/setup/Fixenses/StoresFixture.php /var/www/html/setup/src/Magento/setup/Fixture var / www / html / setup / src / Magento / Setup / Fixture / Simple ProductsFixture.php /var/www/html/setup/src/Magento/setup/Fixenses/tax_rates.csv / var / www / html / setup / src / Magento / Setup / Trình xác thực / var / www / html / setup / src / Magento / Setup / Trình xác thự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 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/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 / điểm chuẩn .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 / điểm chuẩn .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 / 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/.htmlaccess [] []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/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/.htmlaccess [] []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 / profile / ce / Extra_large.xml /var/www/html/setup/performance-toolkit/README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx / var / www / html / nhà cung cấp / .htaccess [] []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 / profile / ce / Extra_large.xml /var/www/html/setup/performance-toolkit/README.txt /var/www/html/setup/performance-toolkit/benchmark.jmx / var / www / html / nhà cung cấp / .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 [] []

Tôi tìm thấy một vài nơi mà nhật ký này có thể được tạo / cập nhật:

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

CẬP NHẬT:

Tôi đã kết thúc bằng cách sử dụng tiện ích logrotate để xử lý các tệp nhật ký ngày càng phát triển. Thỉnh thoảng tôi cũng thiết lập một số công việc định kỳ sẽ kiểm tra các tệp tạm thời không cần thiết.


1
Tôi có cùng một vấn đề với cửa hàng của tôi. Tập tin update.log của tôi là 23g và thực sự đã làm sập mysql của tôi đêm qua. Tôi không chắc chuyện gì đang xảy ra - tôi có một bản cài đặt khá vani.
ngân sách

Câu trả lời:


6

Theo như tôi biết, var/log/update.logtập tin được sử dụng với cron thực sự.

Nó được tuyên bố trong \setup\src\Magento\Setup\Model\Cron\Status.php

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

Và sau đó lấy ra thông qua getLogFilePath()phương thức.

Nếu bạn kiểm tra xem phương thức này đang được gọi ở đâu, thì nó nằm dưới \setup\src\Magento\Setup\Model\Cron\JobFactory.php:

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

Sau đó, $streamOutputbiến được truyền dưới dạng tham số cho lớp công việc, ví dụ:

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

Nếu tôi tiếp tục với ví dụ này, thì $this->outputđược sử dụng trong execute()phương thức:

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

Các run()phương pháp được khai báo trongvendor\symfony\console\Symfony\Component\Console\Command\Command.php

Các $outputsau đó biến được sử dụng ở một số nơi như:

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

Cũng như :

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

Một điều thú vị khác:

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

Theo mã cuối cùng này, một số nội dung có thể được viết trong trường hợp tham số rất dài. Có thể bạn thiết lập công việc định kỳ của mình -vvvà đó là lý do tại sao công cụ được ghi lại.

Đây không phải là một câu trả lời chắc chắn, nhưng bạn nên theo dõi dấu vết ngăn xếp mà tôi vừa đưa cho bạn để điều tra vấn đề.


2

Bạn có thể đặt quyền sai trên một số thư mục. / update / cron liệt kê tất cả các thư mục có quyền sai

Cách dễ dàng chỉ là nhận xét trong bản cập nhật và thiết lập 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

Bạn không cần chúng nếu bạn không cần cập nhật và cài đặt từ bảng quản trị.

Đó là ý tưởng nguy hiểm cho máy chủ sản xuất. Bạn có thể cập nhật thủ công qua trình soạn thảo trên máy chủ thử nghiệm / cục bộ; kiểm tra nó; sau đó sao chép cập nhật vào máy chủ sản xuất.

Người bạn thực sự cần là

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

Nó quản lý "bộ chỉ mục, gửi e-mail tự động, tạo sơ đồ trang web, v.v." - như được mô tả trong devdocs


Có, điều này cũng được chỉ ra trong tài liệu Magento 2 để định cấu hình cron. Dù sao, chúng tôi đã kết thúc bằng cách sử dụng logrotate và một số công việc định kỳ tùy chỉnh, kiểm tra và dọn dẹp hệ thống tệp, với mục tiêu tối ưu hóa việc sử dụng không gian đĩa.
reuelab

1

/var/log/update.loglà tệp nhật ký cron và vấn đề này đặc biệt xuất hiện khi bạn có tệp permission issue. "Đây là những gì tôi đã nhận được trong trường hợp của mình khi tôi mở tập tin đó."

và đây có thể là bản sửa lỗi: https://community.bitnami.com/t/update-log-file-grows-rapidly-in-magento-2-1-1/49253/6

Bạn cần đặt quyền và quyền sở hữu chính xác cho các thư mục và tệp Magento của mình.


0

Theo tôi biết update.loglà tệp nhật ký tùy chỉnh của bạn vì Magento 2 tạo nhật ký loại tệp này

  • var / log / debug.log - tất cả thông tin được lưu bởi Psr \ Log \ LoggerInterface :: debug () được lưu trữ ở đó.
  • var / log / ex.log - tất cả thông tin ngoại lệ được lưu trữ ở đó.
  • var / log / system.log - thông tin từ các cấp ghi nhật ký khác được lưu ở đó.

Tôi không chắc tại sao Nó tạo ra quá nhiều dữ liệu nhật ký trong tệp của bạn có thể là một số lỗi cú pháp hoặc một cái gì đó tương tự.

Nhưng tôi khuyên bạn chỉ nên tìm kiếm với update.logtrong thư mục mã Magento 2 của bạn và xóa nhật ký đó khỏi mã của bạn.


Xin chào, Cảm ơn bạn đã trả lời. Tôi không nghĩ đó là nhật ký tùy chỉnh, vì tôi có thể tìm thấy nó trên một số Lớp Magento mặc định. Tôi đã cập nhật câu hỏi của tôi để biết thêm thông tin.
reuelab
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.