我正在使用标准 Python 日志库 ( import logging) 并安装 Ideolog 插件。但它不支持标准日志库的格式(并且 PyCharm 要求对其进行配置)。我尝试了一些正则表达式,但它们不适合。我应该如何配置它?


PS在代码中我使用日志记录 logging.info('Some info')
小智 9
我刚刚遇到了同样的问题。
我使用了以下配置:
我的日志格式如下所示:
"%(asctime)s %(name)-30s %(levelname)-8s %(message)s"
Run Code Online (Sandbox Code Playgroud)
日志解析模式:
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"
Run Code Online (Sandbox Code Playgroud)
日志突出显示模式:
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"
Run Code Online (Sandbox Code Playgroud)
HTH 和 YMMV...
如果你不想在正则表达式上费太多功夫,你可以做一个简单的
(INFO)
Run Code Online (Sandbox Code Playgroud)
将匹配“INFO”,您可以为其他级别执行其余操作以实现快速可视化。
小智 5
在一个非常短的测试文件上遇到问题 - 只有四个条目 - 并且一直在寻找为什么我的正确模式没有被应用。
正如官方文档所述 https://github.com/JetBrains/ideolog/wiki/Custom-Log-Formats
选择正确的模式
“为了检测日志文件的格式,所有现有模式都会与文件的前 25 行进行匹配。如果匹配数超过 5,则选择匹配最多的模式。否则,每行解析器会出现愚蠢的情况用来。”
因此,如果您的日志文件少于 5 个条目,则算法表示它无法检测到正确的模式 - 并且不会应用任何模式,即使只有一种活动模式并且正则表达式 100% 正常工作。
团体
“此外,您必须指定时间、严重性和类别的捕获组索引。捕获组的编号从 1 开始。如果您没有项目的捕获组,请指定 0。”
因此:组编号从 1 开始!
str_logging_format = "%(asctime)s - %(name)-12s - %(levelname)-8s - %(message)s"
# -- Ideolog Config --
# :pattern:
# ^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s-\s(\S*)\s*-\s(\w*)\s*-\s(.*)$
# :timePattern: yyyy-MM-dd HH:mm:ss,SSS
# :linePattern: ^\d
# :time Group : 1
# :severity Group : 3
# :Category Group: 2
#
# :highlighting:
# pattern="^\s*CRITICAL\s*$" action="HIGHLIGHT_LINE" fg="FF0000" bold="true" stripe="true"
# pattern="^\s*ERROR\s*$" action="HIGHLIGHT_LINE" fg="FF5F62" stripe="true"
# pattern="^\s*WARNING\s*$" action="HIGHLIGHT_LINE" fg="C73EC8" bold="true"
# pattern="^\s*INFO\s*$" action="HIGHLIGHT_LINE" fg="08C8EA"
# pattern="^\s*DEBUG\s*$" action="HIGHLIGHT_LINE" fg="3940C8"
Run Code Online (Sandbox Code Playgroud)
PS: https: //regex101.com/非常适合测试您的模式。