web-dev-qa-db-fra.com

Enregistrement dans un fichier uniquement avec JLog

Je crois que le documentation JLog est incorrect avec ceci:

Souvent, vous souhaiterez peut-être afficher un message du journal des erreurs et vous connecter à un fichier d'erreurs. Joomla permet cela de manière native via la fonction JLog :: add. Par exemple:

JLog::a dd(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING, 'jerror');

L'ajout de la catégorie de jerror signifie que ce message sera également affiché aux utilisateurs. Pour écrire uniquement dans un fichier, vous pouvez facilement supprimer ce paramètre et simplement utiliser

JLog::a dd(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING);

J'ai trouvé l'exact opposé dans J3.3. Quand j'utilise:

JLog::add(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING); 

Il se connecte également à l'utilisateur. Si j'ajoute la catégorie, ce n'est pas le cas.

Est-ce que quelqu'un peut confirmer que je ne deviens pas fou ou expliquer mon malentendu?

Si j'ai raison, comment allez-vous contribuer à une demande de modification de la documentation?

5
Tom

C’est ainsi que j’utilise pour ajouter une entrée de journal à un fichier. JLog :: add a trop changé entre les versions de Joomla.

$config = array(
    'text_file' => 'logging.log'
);

// Joomla 3
jimport('joomla.log.logger.formattedtext');
$logger = new JLogLoggerFormattedtext($config);

// Joomla 2.5   
// jimport('joomla.log.loggers.formattedtext');
// $logger = new JLoggerFormattedText($config);

// Comment is a string
// $status can be JLog::INFO, JLog::WARNING, JLog::ERROR, JLog::ALL, JLog::EMERGENCY or JLog::CRITICAL
$entry = new JLogEntry($comment, $status);
$logger->addEntry($entry);
4
Anibal

J'ai mis à jour la page JLog Documentation mentionnée ci-dessus pour (espérons-le) la rendre exacte. Donc, si quelqu'un qui regarde cette question peut vérifier et soulever des problèmes (en tant que commentaires sur cette réponse), alors ce serait très apprécié.

En ce qui concerne la question spécifique, Joomla 3.7 est en cours d’exécution et contient un code principal dans libraries/cms.php qui configure un enregistreur dans la 'file de messages':

JLog::addLogger(array('logger' => 'messagequeue'), JLog::ALL, array('jerror'));

Et puis tout ce qui a une catégorie de 'jerror' est copié dans cet enregistreur, qui affiche ensuite le message à l'utilisateur via la méthode JFactory::getApplication()->enqueueMessage().

Pour obtenir une modification de la documentation Joomla, vous devez vous inscrire pour contribuer à la documentation joomla (par exemple, Comment contribuer à la documentation Joomla , puis marquez la page comme nécessitant une attention particulière (plus le motif), ou vous pouvez aussi le réparer vous-même.

Mais je pense que dans ce cas, la documentation était correcte et qu’il s’agissait d’un bogue temporaire dans le code, comme décrit dans problème de Joomla concernant JLog .

0
Robbie Jackson