Je voudrais étendre la fonction 'console.log' pour ajouter des informations supplémentaires à sa sortie - mais je ne veux pas affecter le script nom/numéro de ligne des informations générées par le navigateur dans la fenêtre console. Voyez comment, si je crée ma propre implémentation, j'obtiens des informations de traçage inutiles, au cas où je voudrais localiser cette région de code... (elles sont toutes liées à l'implémentation du journal, et non au script qui a provoqué le message du journal).
Fondamentalement, mon application est une infrastructure très enfichable, où toute sortie de journal peut se produire dans un nombre quelconque de cadres. En tant que tel, je veux que chaque message de journal comprenne un identifiant unique spécial au début du message de journal.
J'ai essayé de remplacer la méthode console.log par la mienne, mais chrome se plaint en disant Uncaught TypeError: Illegal invocation
Voici comment je le remplace
var orig = console.log;
console.log = function( message )
{
orig( (window == top ? '[root]' : '[' + window.name + ']') + ': ' + message );
}
Des idées ?
[EDIT] Note : Après avoir résolu le problème de 'l'invocation illégale', il semble que le nom de fichier/numéro de ligne soit toujours 'pollué' par l'override...
[EDIT] Il semblerait que la réponse générale soit - NON - en dépit de quelques confusions, la fonctionnalité souhaitée n'est PAS réalisable dans les versions actuelles des navigateurs.
0 votes
A partir d'aujourd'hui, votre dernier Modifier n'est finalement pas valide. Voir ma réponse stackoverflow.com/a/41328175/253098
0 votes
Voici une excellente réponse : stackoverflow.com/a/32928812/274502
0 votes
Presque un duplicata de javascript - Un wrapper approprié pour console.log avec un numéro de ligne correct ? - Stack Overflow Toutefois, cette question est un cas particulier pour lequel l'équipe d'experts de l'UE a été créée.
bind
La solution fonctionne.