Protokoll aufräumen
-
16-10-2019 - |
Frage
Es gibt eine Option zum Reinigen des Protokolls unter system->config->sytem->log cleaning
. Löschen Sie Protokolltabellen oder Dateien unter var/log
. Wenn ich die Protokollreinigung aktiviere, wie finden Sie, wann und welche Protokolle werden gelöscht?
Lösung
Der Standardmagento löscht nicht alles, wie von Tim erwähnt.
Schauen Sie sich meine detaillierte Antwort an Wie soll ich mit Sitzungsdateien umgehen, die zu zahlreich werden?. Es enthält eine Wartungsdatei, die mit Cron -Jobs automatisiert werden kann.
Quelle: Wie soll ich mit Sitzungsdateien umgehen, die zu zahlreich werden?
Bei all unseren Setups verfügen wir über eine Wartung.php -Datei, die die Reinigung der Protokolle und VAR -Verzeichnis ab und zu betreut. Da die Sitzungen entweder in der Datenbank oder im Dateisystem gespeichert werden müssen, werden diese Wartungsdatei beides bereinigt. (Siehe Code unten).
Sie können den folgenden Befehl als Cron -Job ausführen, um die Protokolle zu bereinigen:
php maintenance.php clean=log
Der obige Befehl erzeugt die folgende Ausgabe:
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
Sie können den folgenden Befehl als Cron -Job ausführen, um den VAR -Ordner aufzuräumen:
php maintenance.php clean=var
Der obige Befehl erzeugt die folgende Ausgabe:
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
Der tatsächliche Code (vergessen Sie nicht, den Pfad an Ihre lokale.xml -Datei anzupassen):
<?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;
}
}
Andere Tipps
Standardmäßig reinigt Magento nur die folgenden Tische:
log_quote
log_url
log_visitor_info
log_visitor
log_url_info
log_customer
Die sind eigentlich nicht alle ^log*
Tische.
var/log
Verzeichnis wird nicht gereinigt. Ich denke, der Grund ist, dass es grausam wäre, zu versuchen, festzustellen, welche Protokolleinträge abgelaufen sind und entfernt werden müssen.
Wie auch immer Sie tun können, was Sie möchten, indem Sie entweder beobachten log_log_clean_before
, oder log_log_clean_after
Ereignisse und so etwas wie:
$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));
Wenn Sie diese Weise verwenden, sollten Sie das Protokoll manuell oder automatisch aufräumen:
System> Konfiguration> Erweitert> System> Protokollreinigung
Magento hat keine Klasse, um seine VAR-/Protokolldateien zu steuern und nur zu schreiben.