laravel 5.2 fichier journal personnalisé pour différentes tâches
Peut-on créer un fichier journal personnalisé à des fins différentes dans laravel 5.2
comme pour la commande des entrées de journal qui devraient être dans l'ordre.et de journal pour les paiements les choses liées à l'entrée doit être connecté paiements.journal
Je veux trouver le meilleur possible Laravel façon.
Actuellement nous ne pouvons modifier le fichier journal de la fréquence (quotidienne, simple) ou l'on peut changer le nom du fichier journal autre que celui par défaut, j'.e laravel.journal
- Ceci est un commentaire posté sur Laracast pour la même question: laracasts.com/discuss/channels/general-discussion/...
- Est-il possible d'utiliser
Log::useFiles()
et en spécifiant le nom de fichier avant l'enregistrement de ce message? Si oui, Laravel est 5.2 les docs de l'API en parler.
Vous devez vous connecter pour publier un commentaire.
Il existe un moyen simple:
De sortie dans les journaux du/de la commande.journal:
Logger('order')
(j'ai juste essayé sur la propreté de laravel 5.5.28 projet). Je ne sais pas exactement si vous amde une erreur, donc je n'ai pas de modifier votre réponse, mais écrire un commentaire. Je ne peux même pas modifier en raison de la modification peut avoir au moins 6 caractères modifiés)Ici vous allez... j'ai passé beaucoup de temps à ajouter des fonctionnalités personnalisées à Monolog, qui mesure de le faire d'une manière appropriée. J'ai essayé tellement de nombreuses façons différentes, mais tout était très orthodoxe. J'ai enfin trouvé un bon moyen pour obtenir cette fonctionnalité de travail....
Que la demande est grande, j'avais besoin de séparer les fichiers journaux, et de maintenir l'existant Laravel du Journal de l'interface autant que possible. J'ai besoin de quelque chose comme:
Log::write('audit', 'User logged in to the app.');
Log::info('event', 'User sent out 2 emails.');
La Solution:
App\Providers\AppServiceProvider.php (ajouter à la fonction register)
config\app.php (ajouter des alias)
App\Contracts\Facades\ChannelLog.php
App\Helpers\ChannelWriter.php
App\Helpers\ChannelStreamHandler.php
Après cela, vous pouvez le faire dans n'importe quel fichier:
[] []
question. Son car son à l'aide de la valeur par défautLineFormatter.php
exemple avec le formateur par défautVous pouvez essayer la réaffectation du journal des fonctions pour écrire les différents types de journaux dans des fichiers différents. Cela peut être fait en modifiant le
bootstrap/app.php
fichier:Puis dans votre code, vous pouvez le faire:
Vous pouvez utiliser cette méthode pour modifier toutes les fonctions de log:
storage_path("/logs/orders.log")
ligneenv('LOG_PATH', storage_path("/logs/orders.log"))
, de sorte que les journaux peuvent revenir à storage_path si aucune env est défini.C'est pris en charge dans un moyen beaucoup plus facile maintenant
Créer un canal
goto:
root/config/logging.php
, souschannels
tableau ajouter votre canal personnalisé-je.eDans votre parcours d'un contrôleur ou d'écrire dans ce journal
Le paiement des journaux peut être trouvé à
/storage/logs/payments.log
REMARQUE: extensible à améliorer d'autres personnes à vos exigences
Laravel version 5.6 Docs
De s'étendre sur les ShQ réponse:
Seul problème que j'ai remarqué, c'est que le journal sera ajouté avec
[] []
, qui sont le vide d'un tableau de valeurs pour$context
et$extra
dansLineFormatter.format();
c'est à dire,
vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php
Il y a deux façons de contourner cela, soit de fournir un format qui ne comprennent pas supplémentaire ou d'un contexte à l'constructeur de
LineFormatter
, ou de fournir le 4ème argument$ignoreEmptyContextAndExtra
=true
.Tous les fichiers à l'intérieur de ShQ, en réponse restent les mêmes, mais
ChannelStreamHandler
doit changer.ChannelStreamHandler:
Le changement important est de fournir 4e param de vrai, ce qui est
$ignoreEmptyContextAndExtra
. Ce param, ditLineFormatter
à ignorer nicontext
deextra
tableaux si vide:Vous devez être sûr de votre course monolog 1.22 parce qu'il inclut une correction de bug concernant
ignoreEmptyContextAndExtra
.J'ai aussi ajouté un remplacement pour info() à la
ChannelWritter
classe:En outre, je n'étais pas heureux avec le "lazy load logger" dans la ShQ a la solution qu'elle a été modifiée pour utiliser le fournisseur de service/Cio
Remplacer
ChannelWriter.writeLog()
:et dans votre
AppServiceProvider
:Je vais essayer bundle cela dans un package.
Façon la plus rapide de journal de sortie pour différents fichiers
Pour moi dans Laravel 5.3, je ne suis pas sûr si c'était mon installation précédemment mais j'ai trouvé le bootstrap/app.php ne fonctionne pas pour moi.
J'avais besoin de mettre cela dans la app/Providers/AppServiceProvider.php.
n.b. C'est là que j'ai eu le paramètre du niveau de journal de config avant, donc je me retrouve avec 3 journal des gestionnaires.
Basé sur la ShQ réponse plus courte et la plus simple logger assistant qui vous permet de vous connecter à un fichier personnalisé à la volée. Vous pouvez également ajouter votre gestionnaire personnalisé et de définir le chemin d'accès au fichier.
App\Helper
App\Providers\AppServiceProvider.php (ajouter à la fonction register)
config\app.php (ajouter des alias)
Puis n'importe où dans votre application, vous pouvez appeler
Vous pouvez même personnaliser votre enregistreur de sortie en appelant
Et il sera accessible lorsque vous appelez son nom n'importe où dans votre application.
Log::info('log message', $destinationPath);