python use - PyCharm couleurs de sortie de journalisation




matplotlib with (5)

J'utilise PyCharm pour développer une application GAE sous Mac OS X. Existe-t-il un moyen d'afficher les couleurs dans la console d'exécution de PyCharm?

J'ai mis un handler pour produire des couleurs au format ansi. Ensuite, j'ai ajouté le gestionnaire:

LOG = logging.getLogger()
LOG.setLevel(logging.DEBUG)
for handler in LOG.handlers:
    LOG.removeHandler(handler)

LOG.addHandler(ColorHandler())

LOG.info('hello!')
LOG.warning('hello!')
LOG.debug('hello!')
LOG.error('hello!')

Mais la couleur est la même.

MODIFIER:

Une réponse du suivi des problèmes JetBrains: modifiez la ligne 55 de l'extrait de code de sys.stderr à sys.stdout. Le flux de stderr est toujours coloré en rouge pendant que stdout ne le fait pas.

Maintenant, les couleurs sont correctement affichées.


Answers

Ce qui m'a résolu (sur PyCharm 2017.2) était d'aller dans Preferences -> Editor -> Color Scheme -> Console Colors et changer la couleur de la Console -> Error output . Bien sûr, cela change également la couleur de l'erreur mais au moins vous ne voyez pas tout le temps le rouge ...


J'ai découvert la solution suivante. Apparemment, Pycharm redirige sys.stdout. A partir de la documentation du module sys :

sys.__stdin__
sys.__stdout__
sys.__stderr__

Ces objets contiennent les valeurs d'origine de stdin, stderr et stdout au début du programme. Ils sont utilisés lors de la finalisation et pourraient être utiles pour imprimer sur le flux standard réel, peu importe si l'objet sys.std * a été redirigé.

Il peut également être utilisé pour restaurer les fichiers réels sur des objets de fichiers de travail connus au cas où ils seraient remplacés par un objet cassé. Toutefois, la méthode préférée consiste à enregistrer explicitement le flux précédent avant de le remplacer et à restaurer l'objet enregistré.

Par conséquent, pour résoudre ce problème, vous pouvez rediriger la sortie vers sys.__stdout__ . Exemple de configuration à partir de mon log_config.yml:

console:
  class: logging.StreamHandler
  level: DEBUG
  stream: "ext://sys.__stdout__"
  formatter: colorFormatter


En fin de soirée, mais quiconque avec ce problème, voici la solution qui a fonctionné pour moi:

import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

Cela vient de cette réponse


J'ai construit des systèmes avant d'utiliser ce qui suit:

  1. ERREUR - signifie que quelque chose ne va pas et que ce fil / processus / séquence ne peut pas continuer. Une intervention utilisateur / administrateur est requise
  2. AVERTISSEMENT - quelque chose ne va pas, mais le processus peut continuer comme avant (par exemple, un travail dans un ensemble de 100 a échoué, mais le reste peut être traité)

Dans les systèmes que j'ai construit, les administrateurs étaient sous instruction de réagir aux ERREURS. D'un autre côté, nous surveillons WARNINGS et déterminons pour chaque cas si des modifications du système, des reconfigurations, etc.





python google-app-engine logging pycharm