Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何格式化日志,使其以列形式打印?_Python_Logging_String Formatting - Fatal编程技术网

Python 如何格式化日志,使其以列形式打印?

Python 如何格式化日志,使其以列形式打印?,python,logging,string-formatting,Python,Logging,String Formatting,我有一个项目,其中不同的线程和函数使用不同的日志级别登录到控制台中相同的StreamHandler() 我的日志格式化为: streamformatter = logging.Formatter(fmt='%(levelname)s:\t%(threadName)s:\t%(funcName)s:\t\t%(message)s', datefmt='%H:%M:%S') 这使得我的日志在默认情况下看起来像这样乱七八糟,在什么时候调用什么函数以及从哪个线程调用函数都不容易看到 INFO: C

我有一个项目,其中不同的线程和函数使用不同的日志级别登录到控制台中相同的
StreamHandler()

我的日志格式化为:

streamformatter = logging.Formatter(fmt='%(levelname)s:\t%(threadName)s:\t%(funcName)s:\t\t%(message)s', datefmt='%H:%M:%S')
这使得我的日志在默认情况下看起来像这样乱七八糟,在什么时候调用什么函数以及从哪个线程调用函数都不容易看到

INFO:   COM14-fwcif-listener :  _receive_v32:       my_success: Sending 24 lines to formatter
DB_TRACE:   COM14-fwcif-listener :  _format_and_log_v32:        {"prompt": "undef-COM14", "x_type": "tracelogentry", "y_time": 1392695506.044583, "z_msg": "...."}
INFO:   COM13-fwutil-listener:  _receive_v32:       my_success: Sending 10 lines to formatter
DB_TRACE:   COM13-fwutil-listener:  _format_and_log_v32:        {"prompt": "undef-COM13", "x_type": "tracelogentry", "y_time": 1392695507.356714, "z_msg": "...."}
INFO:   MainThread: _parse:     my_resolve after 4.9784979820251465 seconds and 29 vs 8 attempts
MY_INFO:    MainThread: _parse:     my_success for cmd "trig" =>> "not ready". COM12.ISREADY now set to True
INFO:   MainThread: send:       my_success. Lock being released: <_thread.RLock owner=7512 count=1> with cmd "format c:" and state COM12.ISREADY = False
INFO:   COM12-fwmain-listener:  _receive_v32:       my_success: Number of lines split by S65 is 2 of 16 total lines
INFO:   COM12-fwmain-listener:  _format_and_log_v32:        my_resolve "S65>" added as COM12.lastlinefragment
INFO:   COM12-fwmain-listener:  _format_and_log_v32:        my_success: 575 chars written to log.   Prompt and type detected is "S65>" and "replylogentry: format"
DB_REPLY:   COM12-fwmain-listener:  _format_and_log_v32:        {"prompt": "S65>", "x_type": "replylogentry: format", "y_time": 1392695510.41302, "z_msg": "..."}
INFO:   MainThread: _parse:     my_resolve  searching for "format"=>"Unknown command" in string "..."
INFO:COM14 fwcif侦听器:_receive_v32:my_success:向格式化程序发送24行
DB_TRACE:COM14 fwcif侦听器:_格式_和_日志_v32:{“提示符”:“undf-COM14”,“x_类型”:“TraceGentry”,“y_时间”:1392695506.044583,“z_消息”:“…”}
信息:COM13 fwutil侦听器:_receive_v32:my_success:向格式化程序发送10行
DB_TRACE:COM13 fwutil侦听器:_格式_和_日志_v32:{“提示符”:“undef-COM13”,“x_类型”:“TraceGentry”,“y_时间”:1392695507.356714,“z_消息”:“…”}
信息:主线程:_解析:在4.9784979820251465秒和29次对8次尝试后我的_解析
MY_INFO:main thread:_parse:MY_cmd“trig”=>>“not ready”成功。COM12.i现在已设置为True
信息:主线程:发送:我的成功。正在释放的锁:使用cmd“format c:”和状态COM12.ISREADY=False
信息:COM12 fwmain侦听器:_receive_v32:my_success:S65拆分的行数是16行总数的2行
信息:COM12 fwmain侦听器:_format_和_log_v32:my_resolve“S65>”添加为COM12.lastlinefragment
信息:COM12 fwmain侦听器:_format_和_log_v32:my_success:575个字符写入日志。检测到的提示和类型为“S65>”和“ReplyGentry:格式”
DB_REPLY:COM12 fwmain listener:_format_和_log_v32:{“prompt”:“S65>”,“x_type”:“replygentry:format”,“y_time”:1392695510.41302,“z_msg”:“…”}
信息:主线程:_解析:我的解析搜索字符串“…”中的“格式”=>“未知命令”

每个令牌的宽度可以在
streamformatter
中指定,以这种方式生成固定冒号的日志输出:

streamformatter = logging.Formatter(fmt='%(levelname)-10s:  %(threadName)-20s: %(funcName)-20s:  %(message)s', datefmt='%H:%M:%S')