我正在使用标准的Python日志记录库(import logging
)并安装Ideolog插件。但是它不支持标准日志库的格式(PyCharm要求对其进行配置)。我试过一些正则表达式,但不合适。我应该如何配置?
PS在代码中,我使用logging.info('Some info')
之类的日志记录
答案 0 :(得分:1)
如果您不想在正则表达式上花太多时间,可以做一个简单的
(INFO)
将匹配“ INFO” 您可以将其他级别的内容做为快速可视化。
答案 1 :(得分:0)
我只是遇到了同样的问题。
我使用了以下配置:
我的日志记录格式如下:
"%(asctime)s %(name)-30s %(levelname)-8s %(message)s"
日志解析模式:
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"
记录突出模式:
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"
HTH和YMMV ...
答案 2 :(得分:0)
这是main.py
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)
这是为了突出显示(思想)
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
我做到了,所有工作。祝你好运
答案 3 :(得分:0)
基于基里尔的回答,我终于也将其用于pycharm中。如果有帮助,这是我的设置。
我的日志文件格式化程序是
spaces.messages.create
我的一个日志文件的典型行如下所示
fmtter = logging.Formatter(fmt="%(asctime)s-%(levelname)s-%(message)s")
我的消息模式是
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
请注意,整个日期/时间字符串,“-”,级别字符串,另一个“-”和其余行的显式匹配是有效负载。 \ S与级别名称匹配,没有空格。 https://www.boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html的boost regexp页面非常有用,我使用了sublime来测试表达式。
^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})-(\S*)-(.*)$
答案 4 :(得分:0)
在一个非常短的测试文件上遇到问题 - 只有四个条目 - 并且一直在寻找为什么我的正确模式没有被应用。
正如官方文档所述 https://github.com/JetBrains/ideolog/wiki/Custom-Log-Formats
选择正确的模式
"为了检测日志文件的格式,所有现有模式都与文件的前 25 行进行匹配。如果匹配数量大于 5,则选择匹配最多的模式。否则,每使用了 -line 解析器。”
因此,如果您的日志文件少于 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"
PS:https://regex101.com/ 非常适合测试您的模式。