Очистка журнала
-
16-10-2019 - |
Вопрос
Есть вариант для очистки журнала под system->config->sytem->log cleaning
. Анкет Очищает ли это таблицы журналов или файлы под var/log
. Анкет Если я включите очистку журнала, как найти, когда и какие журналы очищены?
Решение
Magento по умолчанию не очищает все, как упомянуто Тимом.
Проверьте мой подробный ответ Как мне обрабатывать файлы сеансов, которые становятся слишком многочисленными?. Анкет Он включает в себя файл обслуживания, который может быть автоматизирован с использованием заданий Cron.
Источник: Как мне обрабатывать файлы сеансов, которые становятся слишком многочисленными?
Во всех наших настройках у нас есть файл maintains.php, который время от времени заботится о очистке журналов и WAR Directory. Поскольку сеансы должны быть сохранены в базе данных или в файловой системе, этот файл обслуживания очистит их обоих. (См. Код ниже).
Вы можете запустить следующую команду в качестве задания Cron, чтобы очистить журналы:
php maintenance.php clean=log
Приведенная выше команда будет создавать следующий выход:
catalogindex_aggregation has been truncated
catalogindex_aggregation_tag has been truncated
catalogindex_aggregation_to_tag has been truncated
catalog_compare_item has been truncated
dataflow_batch_export has been truncated
dataflow_batch_import has been truncated
log_customer has been truncated
log_quote has been truncated
log_summary has been truncated
log_summary_type has been truncated
log_url has been truncated
log_url_info has been truncated
log_visitor has been truncated
log_visitor_info has been truncated
log_visitor_online has been truncated
report_compared_product_index has been truncated
report_event has been truncated
report_viewed_product_index has been truncated
Вы можете запустить следующую команду в качестве задания Cron, чтобы очистить папку VAR:
php maintenance.php clean=var
Приведенная выше команда будет создавать следующий выход:
downloader/.cache/* has been emptied
downloader/pearlib/cache/* has been emptied
downloader/pearlib/download/* has been emptied
var/cache/ has been emptied
var/locks/ has been emptied
var/log/ has been emptied
var/report/ has been emptied
var/session/ has been emptied
var/tmp/ has been emptied
Фактический код (не забудьте настроить путь к вашему файлу local.xml):
<?php
$xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA);
$db['host'] = $xml->global->resources->default_setup->connection->host;
$db['name'] = $xml->global->resources->default_setup->connection->dbname;
$db['user'] = $xml->global->resources->default_setup->connection->username;
$db['pass'] = $xml->global->resources->default_setup->connection->password;
$db['pref'] = $xml->global->resources->db->table_prefix;
if (!isset($argv[1]) || !stristr($argv[1], 'clean=')) {
echo 'Please use one of the commands below:' . PHP_EOL;
echo 'php maintenance.php clean=log' . PHP_EOL;
echo 'php maintenance.php clean=var' . PHP_EOL;
die;
}
$method = str_replace('clean=', '', $argv[1]);
switch ($method) {
case 'log':
clean_log_tables();
break;
case 'var':
clean_var_directory();
break;
default:
echo 'Please use one of the commands below:' . PHP_EOL;
echo 'php maintenance.php clean=log' . PHP_EOL;
echo 'php maintenance.php clean=var' . PHP_EOL;
break;
}
function clean_log_tables() {
global $db;
$tables = array(
'catalogindex_aggregation',
'catalogindex_aggregation_tag',
'catalogindex_aggregation_to_tag',
'catalog_compare_item',
'dataflow_batch_export',
'dataflow_batch_import',
'log_customer',
'log_quote',
'log_summary',
'log_summary_type',
'log_url',
'log_url_info',
'log_visitor',
'log_visitor_info',
'log_visitor_online',
'report_compared_product_index',
'report_event',
'report_viewed_product_index'
);
mysql_connect($db['host'], $db['user'], $db['pass']) or die(mysql_error());
mysql_select_db($db['name']) or die(mysql_error());
foreach($tables as $v => $k) {
@mysql_query('TRUNCATE `'.$db['pref'].$k.'`');
echo $db['pref'] . $k . ' has been truncated' . PHP_EOL;
}
}
function clean_var_directory() {
$dirs = array(
'downloader/.cache/*',
'downloader/pearlib/cache/*',
'downloader/pearlib/download/*',
'var/cache/',
'var/locks/',
'var/log/',
'var/report/',
'var/session/',
'var/tmp/'
);
foreach($dirs as $v => $k) {
exec('rm -rf '.$k);
echo $k . ' has been emptied' . PHP_EOL;
}
}
Другие советы
По умолчанию Magento очищает только следующие таблицы:
log_quote
log_url
log_visitor_info
log_visitor
log_url_info
log_customer
Которые на самом деле не все ^log*
столы.
var/log
каталог не очищен. Я думаю, что причина в том, что было бы ужасно попытаться определить, какие записи журналов истек и должны быть удалены.
Однако вы можете делать все, что вам нравится, наблюдая за log_log_clean_before
, или же log_log_clean_after
События и запуск чего -то вроде:
$dirs = array(
'downloader/.cache/*', // MagentoConnect 2.0
'downloader/pearlib/cache/*', // MagentoConnect 1.0
'downloader/pearlib/download/*', // MagentoConnect 1.0
'var/cache/',
'var/log/',
'var/report/',
'var/tmp/'
);
exec('rm -rf ' . implode(' ', $dirs));
Используя этот путь, вы должны вручную очистить журнал или автоматически:
Система> Конфигурация> Advanced> System> Очистка журнала
У Magento нет какого -либо класса для управления своими файлами VAR/журнала, только написание.