AKTUALIZACJA:
Skończyło się na użyciu narzędzia logrotate do obsługi stale rosnących plików dziennika. Skonfigurowałem też kilka zadań crona, które od czasu do czasu sprawdzą niepotrzebne pliki tymczasowe.
Mam skonfigurowany i uruchomiony standardowy cron Magento 2. Po dwóch dniach napotkałem pewne problemy podczas uruchamiania niektórych akcji w panelu administracyjnym. Kiedy sprawdziłem dzienniki serwera, okazało się, że jest to problem z miejscem na dysku. Po dalszym dochodzeniu dowiedziałem się, że to update.log.txt
winowajca. Rozmiar pliku zwiększał się o> 1 MB co minutę. Był czas, kiedy osiągnął ponad 20 GB.
Czy to normalne w przypadku standardowej konfiguracji Magento 2? A może i jak mogę to wyłączyć lub przynajmniej zminimalizować?
Dzieje się tak zarówno w trybie deweloperskim, jak i produkcyjnym.
Konfiguracja Crona została oparta na tym przewodniku .
Zakładka 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
PRZYKŁADOWA ZAWARTOŚĆ DZIENNIKA
/var/www/html/setup/src/Magento/Setup/Console/Command/I18nCollectPhrasesCommand.php /var/www/html/setup/src/Magento/Setup/Console/Command/MaintenanceStatusCommand.pht / var / 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/html/setup/src/Magento/Setup/Console/Command/InstallStore. / 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 / Magento / Setup / Fixtures / IndexersStatesApplyFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/StoresFixture.php /var/www/html/setup/src/Magento/Setup/Fixtures/CategoriesFixture.php / 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 / 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 / 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 / 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 / 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 / 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 [] []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 / sprzedawca / .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 / sprzedawca / .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 [] []
Znalazłem kilka miejsc, w których ten dziennik może zostać wygenerowany / zaktualizowany:
<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';
AKTUALIZACJA:
Skończyło się na użyciu narzędzia logrotate do obsługi stale rosnących plików dziennika. Skonfigurowałem też kilka zadań crona, które od czasu do czasu sprawdzą niepotrzebne pliki tymczasowe.
Odpowiedzi:
O ile mi wiadomo,
var/log/update.log
plik jest rzeczywiście używany z cronem.Jest zadeklarowany w
\setup\src\Magento\Setup\Model\Cron\Status.php
A następnie odzyskane za pomocą
getLogFilePath()
metody.Jeśli sprawdzisz, gdzie wywoływana jest ta metoda, znajduje się ona pod
\setup\src\Magento\Setup\Model\Cron\JobFactory.php
:Następnie
$streamOutput
zmienna jest przekazywana jako parametr do klasy zadania, na przykład:Jeśli będę nadal korzystać z tego przykładu,
$this->output
jest on używany wexecute()
metodzie:run()
Metoda jest zadeklarowanavendor\symfony\console\Symfony\Component\Console\Command\Command.php
$output
Zmienna jest następnie wykorzystywana w wielu miejscach, takich jak:Jak również :
Kolejny interesujący:
Zgodnie z tym ostatnim kodem niektóre rzeczy można zapisać w przypadku bardzo pełnego parametru. Być może konfigurujesz swoje zadania crona
-vv
i dlatego rejestruje się różne rzeczy.To nie jest jednoznaczna odpowiedź, ale powinieneś śledzić ślad stosu, który właśnie ci dałem, aby zbadać problem.
źródło
Prawdopodobnie ustawiłeś złe uprawnienia do niektórych folderów. / update / cron wyświetla wszystkie foldery z niewłaściwymi uprawnieniami
Prostym sposobem jest po prostu komentarz w aktualizacji i konfiguracji crontab
Nie potrzebujesz ich, jeśli nie musisz aktualizować i instalować z panelu administracyjnego.
To niebezpieczny pomysł na serwer produkcyjny. Możesz ręcznie aktualizować za pomocą kompozytora na serwerze testowym / lokalnym; Sprawdź to; następnie skopiuj aktualizacje na serwer produkcyjny.
Tak naprawdę potrzebujesz
Zarządza „indeksatorami, wysyła zautomatyzowane wiadomości e-mail, generuje mapę witryny itd.” - zgodnie z opisem w devdocs
źródło
/var/log/update.log
to plik dziennika cron, a ten problem pojawia się szczególnie wtedy, gdy masz plikipermission issue
. „Oto, co mam w moim przypadku, gdy otwieram ten plik.”i może to być poprawka: https://community.bitnami.com/t/update-log-file-grows-rapidly-in-magento-2-1-1/49253/6
Musisz ustawić prawidłowe uprawnienia i prawa własności do swoich katalogów i plików Magento.
źródło
Jak wiem,
update.log
to Twój niestandardowy plik dziennika, ponieważ Magento 2 generuje dziennik tego rodzaju plikówNie jestem pewien, dlaczego generuje tak dużo danych dziennika w twoim pliku, może to być jakiś błąd składniowy lub coś takiego.
Ale sugeruję po prostu wyszukać za pomocą za pomocą
update.log
z katalogu kodu Magento 2 i usunąć ten dziennik z kodu.źródło