8
votes

Ideolog (PyCharm): comment configurer le format de journal pour la bibliothèque de journalisation standard

J'utilise la bibliothèque de journalisation Python standard ( import logging ) et j'installe le plugin Ideolog. Mais il ne prend pas en charge le format de la bibliothèque de journalisation standard (et PyCharm demande de le configurer). J'ai essayé des expressions régulières, mais elles ne correspondent pas. Comment dois-je le configurer?

Écran du format du journal et erreur Ideolog

Paramètres idéologiques par défaut

PS Dans le code, j'utilise la journalisation comme logging.info('Some info')


0 commentaires

4 Réponses :


5
votes

J'ai juste eu le même problème.

J'ai utilisé la configuration suivante:

Mon format de journalisation ressemble à ceci:

pattern="^\s*ERROR?\s*$" action="HIGHLIGHT_LINE" fg="-65536" stripe="true"
pattern="^\s*WARNING?\s*$" action="HIGHLIGHT_LINE" fg="-22016" bold="true"
pattern="^\s*INFO\s*$" action="HIGHLIGHT_LINE" fg="-12599489"
pattern="^\s*DEBUG\s*$" action="HIGHLIGHT_LINE" fg="-14927361" stripe="true"
pattern="^\s*CRITICAL\s*$" action="HIGHLIGHT_LINE" fg="-65536" bold="true" italic="true" stripe="true"

Modèle d'analyse de journal:

pattern="^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s(\S*)\s*(\w*)\s*(.*)$" timePattern="yyyy-MM-dd HH:mm:ss,SSS" linePattern="^\d" timeId="0" severityId="2" fullmatch="true"

Log Hightlight Patterns:

"%(asctime)s %(name)-30s %(levelname)-8s %(message)s"

HTH et YMMV ...


0 commentaires

1
votes

C'est pour main.py

message pattern:   ^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s(\S*)\s*(\w*)\s*(.*)$

message start pattern:    ^\d

time format         HH:mm:ss,SSS
time capture group:       0
severity capt group:      3
cat capt group:           1

et c'est pour mettre en évidence (idealog)

import logging as log
logger = r'logger.log'


if __name__ == "__main__":
log.basicConfig(filename=logger,
                format='%(asctime)s - %(threadName)s - %(name)s - %(levelname)s - %(message)s',
                datefmt='%Y-%m-%d %H:%M:%S', level=log.DEBUG)

Je fais ça et tout fonctionne. Bonne chance


0 commentaires

1
votes

si vous ne voulez pas trop vous débattre avec les expressions régulières, vous pouvez en faire une simple

(INFO)

correspondra à "INFO" et vous pouvez faire le reste pour les autres niveaux pour une visualisation rapide.


0 commentaires

0
votes

Sur la base de la réponse de Kirill, je l'ai finalement fait fonctionner dans pycharm aussi. Au cas où cela serait utile, voici ma configuration.

Mon formateur de fichier journal est

Time format is yyyy-MM-dd HH:mm:ss,SSS
Time is group 0
Severity group 1
Category group 2

Les lignes typiques de l'un de mes fichiers journaux ressemblent à ceci

^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})-(\S*)-(.*)$

Mon modèle de message est

2020-11-09 14:26:08,567-INFO-measuring Op/frame for CNN
2020-11-09 14:26:09,045-INFO-Op/frame: 249.64M

Notez la correspondance explicite de toute la chaîne date / heure, puis «-», puis la chaîne de niveau, un autre «-», puis le reste de la ligne est la charge utile. Le \ S correspond au nom du niveau sans espaces. La page boost regexp à https://www.boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html est utile et j'ai utilisé sublime pour tester l'expression.

fmtter = logging.Formatter(fmt="%(asctime)s-%(levelname)s-%(message)s")


0 commentaires