Magento 2 update.log는 1 분마다 상당한 크기를 증가시킵니다.


9

최신 정보:

나는 점점 증가하는 로그 파일을 처리하기 위해 logrotate 유틸리티를 사용하게되었습니다. 또한 불필요한 임시 파일을 수시로 확인하는 크론 작업을 거의 설정하지 않았습니다.


표준 Magento 2 cron이 구성되어 실행 중입니다. 이틀 후 관리자 패널에서 일부 작업을 실행하는 동안 문제가 발생했습니다. 서버 로그를 확인했을 때 디스크 공간 문제라는 것을 알았습니다. 추가 조사 후 이것이 update.log.txt범인 임을 알았습니다 . 파일 크기는 1 분마다> 1MB 씩 증가했습니다. 20GB 이상에 도달 한 시간이있었습니다.

여기에 이미지 설명을 입력하십시오

표준 Magento 2 설정이 정상입니까? 아니면 어떻게 비활성화하거나 최소한 최소화 할 수 있습니까?

개발자 및 프로덕션 모드 모두에서 발생합니다.

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 / var / www / 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 / 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/InstallStoreConfigurationCommand.php / var / 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/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 / 마 젠토 / 설정 / 픽스처 / 인덱서 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 / 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/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 / 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/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 / 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 [] []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 / 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 / 공급 업체 /.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 / 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 / 공급 업체 /.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';

최신 정보:

나는 점점 증가하는 로그 파일을 처리하기 위해 logrotate 유틸리티를 사용하게되었습니다. 또한 불필요한 임시 파일을 수시로 확인하는 크론 작업을 거의 설정하지 않았습니다.


1
내 상점과 동일한 문제가 있습니다. 내 update.log 파일은 23g이었고 실제로 어젯밤에 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>');
        }

이 마지막 코드에 따르면 매우 장황한 매개 변수의 경우 일부 내용을 작성할 수 있습니다. 어쩌면 당신은 당신의 크론 작업을 설정 -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에 설명 된대로 "인덱서, 자동화 된 전자 메일 보내기, 사이트 맵 생성 등"을 관리합니다.


예, cron 구성을위한 Magento 2 설명서에도 나와 있습니다. 어쨌든 우리는 디스크 공간 사용을 최적화하기 위해 파일 시스템을 확인하고 정리하는 logrotate 및 일부 사용자 정의 cron 작업을 사용했습니다.
reuelab


0

내가 알고 있듯이 update.logMagento 2는 이러한 종류의 파일을 로그로 생성하기 때문에 사용자 정의 로그 파일입니다.

  • var / log / debug.log – Psr \ Log \ LoggerInterface :: debug ()에 의해 저장된 모든 정보가 거기에 저장됩니다.
  • var / log / exception.log – 모든 예외 정보가 여기에 저장됩니다.
  • var / log / system.log – 다른 로깅 수준의 정보가 여기에 저장됩니다.

파일에서 너무 많은 로그 데이터를 생성하는 이유가 구문 오류이거나 그와 비슷한 것일 수 있습니다.

그러나 update.logMagento 2 코드 디렉토리에서 with를 사용하여 검색하고 코드에서 해당 로그를 제거하는 것이 좋습니다 .


안녕하세요, 답변 주셔서 감사합니다. 나는 그것의 커스텀 로그를 생각하지 않는다. 왜냐하면 나는 기본 마 젠토 클래스에서 그것을 찾을 수 있기 때문이다. 자세한 내용을 보려면 질문을 업데이트했습니다.
reuelab
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.