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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top