2
votes

Comment Laravel supprime les anciens fichiers journaux

J'utilise Laravel 5.4 . Dans mon fichier config / app.php , l'option de stockage des journaux est définie sur daily . Ainsi, le framework créera un fichier journal quotidien comme 'laravel-2019-03-11.log'. De plus, les anciens fichiers journaux seront supprimés automatiquement selon la valeur par défaut ou selon la valeur de log_max_files dans le fichier config / app.php .

Ma question est de savoir où est écrit le code de dissociation (j'ai essayé de le trouver dans le dossier du fournisseur mais pas de chance)? En outre, y a-t-il un moyen de remplacer cette logique par défaut. Ce que je veux, c'est, au lieu de supprimer ces anciens fichiers journaux, de les déplacer dans un autre dossier comme log_backup ou quelque chose.


5 commentaires

Exécutez un cron qui fait cela au lieu de changer quoi que ce soit dans vendor . Si vous voulez vraiment apporter un changement, vous devrez câbler votre propre journalisation.


Le code de dissociation se trouve dans le fichier RotatingFileHander.php ( github. com / Seldaek / monolog / blob / master / src / Monolog / Handler / ‌… ). C'est une mauvaise idée de changer quoi que ce soit dans le dossier du fournisseur car il peut être écrasé chaque fois que vous exécutez une installation / mise à jour de composer, mais cela vous donnera une idée de l'endroit où commencer pour étendre ou créer la vôtre.


@aynber Merci d'avoir fourni des informations sur le fichier. Cela m'a vraiment aidé. Mais y a-t-il un moyen par lequel je peux remplacer cette fonctionnalité par défaut?


github.com/Seldaek/monolog/tree/master/src/Monolog/ Gestionnaire


Si vous pouvez mettre à niveau vers Laravel 5.6 (ou supérieur), tout le système de journalisation a été remanié et il s'agirait d'ajouter un canal de journal de "sauvegarde" supplémentaire à la pile dans config / logging.php . Ce serait de loin la solution la plus propre


3 Réponses :


0
votes

Vous pouvez simplement créer une commande distincte pour déplacer périodiquement les fichiers journaux avec cron job.

Voici un exemple.

déplacer les fichiers vers un autre dossier.

public function moveLogs(){

  File::move( app()->storagePath().'your file name', $your/new/path )

}


1 commentaires

Merci pour votre réponse. Je suis censé faire la même chose, mais je veux savoir comment fonctionne le comportement du journal par défaut. J'ai lu la documentation de laravel mais cela ne m'aide pas.



1
votes

Les anciens fichiers sont supprimés par Monolog \ Handler \ RotatingFileHandler :: rotate .

Je sais que vous utilisez la version 5.4, mais si la mise à niveau vers la version 5.6 (ou supérieure) est une option, vous peut profiter des nouvelles fonctionnalités de journalisation. Tout ce que vous auriez à faire est d'ajouter un nouveau canal de journalisation backup à config / logging.php et de l'inclure dans stack . Ce serait de loin la solution la plus propre.

Par exemple, pour conserver une sauvegarde de tous les journaux critiques ou supérieurs:

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily', 'backup'],
        'ignore_exceptions' => false,
    ],
    'backup' => [
        'driver' => 'single',
        'path' => storage_path('logs/backup.log'),
        'level' => 'critical',
    ],


0 commentaires

0
votes

Dans laravel 5.4, votre fichier journal a été automatiquement supprimé car vous avez peut-être déjà 5 fichiers journaux par jour dans votre répertoire journal & log_max_size dans laravel 5.4 a la valeur par défaut de 5 c'est pourquoi vos journaux ont été supprimés automatiquement.


0 commentaires