Question

Il y a une option pour le nettoyage sous journal system->config->sytem->log cleaning. Est-il des tables ou des fichiers journaux clairs sous var/log. Si je permettent de nettoyer journal comment faire trouver quand et qui sont effacés journaux?

Était-ce utile?

La solution

La valeur par défaut Magento ne pas tout clair comme mentionné par Tim.

Vérifiez ma réponse détaillée Comment dois-je gérer les fichiers de session qui deviennent trop nombreux?

Sur toutes nos configurations nous avons un fichier maintenance.php qui prend en charge le nettoyage des journaux et le répertoire var une fois dans un certain temps. Étant donné que les séances doivent être soit enregistrées dans la base de données ou sur le système de fichiers, ce fichier de maintenance les nettoyer à la fois. (Le code ci-dessous).

Vous pouvez exécuter la commande suivante en tant que tâche cron pour nettoyer les journaux:

php maintenance.php clean=log

La commande ci-dessus va produire la sortie suivante:

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

Vous pouvez exécuter la commande suivante en tant que tâche cron pour nettoyer le dossier var:

php maintenance.php clean=var

La commande ci-dessus va produire la sortie suivante:

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

Le code actuel (Ne pas oublier de régler le chemin de votre fichier 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;
    }
}

Autres conseils

Par défaut Magento ne nettoie que seuls les tableaux suivants:

log_quote
log_url
log_visitor_info
log_visitor
log_url_info
log_customer

qui sont en fait pas toutes les tables de ^log*.

répertoire var/log n'est pas nettoyé. Je pense que la raison en est que ce serait horrible d'essayer de déterminer les entrées du journal sont périmés et doivent être supprimés.

Cependant, vous pouvez faire tout ce que vous aimez en observant soit log_log_clean_before, ou des événements log_log_clean_after et courir quelque chose comme:

$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));

En utilisant cette façon, vous devez nettoyer manuellement le journal ou automatiquement:

Système> Configuration> Avancé> Système> Nettoyage Log

Magento n'a pas de classe pour contrôler ses fichiers var / log, seule l'écriture.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top