相关文章推荐
温柔的煎鸡蛋  ·  Flutter ...·  1 周前    · 
一身肌肉的剪刀  ·  Amazon.com: COSTWAY ...·  1 月前    · 
温柔的自行车  ·  docker使用GPU总结 - ...·  4 月前    · 
逼格高的铅笔  ·  Git commit issue ...·  10 月前    · 
小胡子的大葱  ·  iText7 ...·  1 年前    · 
潇洒的火锅  ·  遇见最美Windows ...·  1 年前    · 

python 日志打印模块,输出时间、文件名、行号等信息

通过logging模块来控制日志的输出,相比print直接格式化输出,更加的方便;可以添加更多的日志信息,比如时间、行号、文件信息统一输出;可以通过 setLevel 来统一控制日志的开启与关闭。

下面是参考代码:

#!/usr/bin/env python
# -*-coding:UTF-8-*-
import logging
logging.basicConfig(format='%(asctime)s.%(msecs)03d [%(levelname)s] [%(filename)s:%(lineno)d] %(message)s',
                    datefmt='## %Y-%m-%d %H:%M:%S')
logging.getLogger().setLevel(logging.DEBUG)
logger = logging.getLogger()
logger.debug("This is a debug log")
logger.info("This is an info log")
logger.critical("This is critical")
logger.error("An error occurred\n")

输出结果:

29-02-2020:12:41:17,935 DEBUG    [log.py:11] This is a debug log
29-02-2020:12:41:17,935 INFO     [log.py:12] This is an info log
29-02-2020:12:41:17,935 CRITICAL [log.py:13] This is critical
29-02-2020:12:41:17,935 ERROR    [log.py:14] An error occurred

如果在项目中需要设置多个不同的日志输出器,可以参考下面的代码:

#!/usr/bin/env python
# -*-coding:UTF-8-*-
import logging
# 设置输出格式
logging.basicConfig(format='%(asctime)s.%(msecs)03d [%(levelname)s] [%(filename)s:%(lineno)d] %(message)s',
                    datefmt='## %Y-%m-%d %H:%M:%S')
# 设置日志打印级别
logging.getLogger("test").setLevel(logging.DEBUG)
# 设置日志输出器的名字,可以在项目中配置多个不同的日志输出器
logger = logging.getLogger("test")
logging.getLogger("info").setLevel(logging.INFO)
logger2 = logging.getLogger("info")
logger.debug("This is a debug log")
logger.info("This is an info log")
logger.critical("This is critical")
logger.error("An error occurred\n")
logger2.debug("This is a debug log")
logger2.info("This is an info log")
logger2.critical("This is critical")
logger2.error("An error occurred")

输出结果:

29-02-2020:12:36:30,272 DEBUG    [log.py:17] This is a debug log
29-02-2020:12:36:30,272 INFO     [log.py:18] This is an info log
29-02-2020:12:36:30,272 CRITICAL [log.py:19] This is critical
29-02-2020:12:36:30,272 ERROR    [log.py:20] An error occurred
29-02-2020:12:36:30,273 INFO     [log.py:23] This is an info log
29-02-2020:12:36:30,273 CRITICAL [log.py:24] This is critical
29-02-2020:12:36:30,273 ERROR    [log.py:25] An error occurred
                    python 日志打印模块,输出时间、文件名、行号等信息通过logging模块来控制日志的输出,相比print直接格式化输出,更加的方便;可以添加更多的日志信息,比如时间、行号、文件信息统一输出;可以通过 setLevel 来统一控制日志的开启与关闭。下面是参考代码:#!/usr/bin/env python# -*-coding:UTF-8-*-import logginglogg...
				
logging模块简介 logging模块Python内置的日志模块,用来生成程序的日志。一条日志对应一个事件的发生,一个事件一般包括:事件发生时间、事件发生位置、事件内容、事件严重程度-日志级别。(还可以包括进程ID、进程名称、线程ID、线程名称等) logging模块的组成 1.日志级别:日志分为五个等级,从低到高分别是:DEBUG、INFO、WANGING、ERROR、CRITICAL DEBUG:最详细的信息,通常定位问题的时候用 INFO:确认一切按照预期运行,详细程度仅次于DEBUG def Log(msg,line,name): #文件地址 __file__,可选添加 date = time.strftime('%Y.%m.%d %H:%M:%S ',time.localtime(time.time())) print(date+':'+ msg +', Line '+line+' , in '+name)         Loggingpython自带的模块,这个模块支持输出不同级别的日志,可以输出到控制台和写入文件,支持TCP、HTTP、GET/POST、SMTP、Socket等协议,将日志信息发送到网络等等。 Logging提供5个等级的输出,CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,如果把
logger = logging.getLogger() formatter = logging.Formatter('%(asctime)s.%(msecs)03d-%(name)s-%(filename)s-[line:%(lineno)d]' '-%(levelname)s-[日志信息]: ... import sys def init_logging(log_file, stdout=False): formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(module)s: %(message)s', datefmt='%m/%d/%Y %H:%M:%S') print('Ma.
python中的很多模块是非常牛X的,之前提到过logging模块(其功能类似于java下的Log4j ),由于最近一个涉及网络排障的脚本需要日志输出,这里就使用了pythonlogging模块去实现。日志全部写到一个文件中时,随着时间的推移文件会越来越来,这里可以利用TimedRotatingFileHandler方法或RotatingFileHandler方法来进行处理。 在日志输出不涉及...
【代码】python logging模块使用。 - 利用logging模块做了一个类和一个装饰器,可以将代码直接拷贝到自己的工程中使用,测试代码和说明下面也都有。 - 日志会自动生成文件并且按照日期存储 - 日志会同时输出到控制台和文件中 - 使用时可以看使用示例
```cpp #include <iostream> #define PRINT_LOCATION std::cout << "File: " << __FILE__ << ", Line: " << __LINE__ << std::endl; 该代码中,`__FILE__`用于获取当前文件名,`__LINE__`用于获取当前行号。 第四步,调用上述宏定义即可实现打印文件名行号。例如: ```cpp int main() { PRINT_LOCATION // 其他代码 return 0; 当程序执行到`PRINT_LOCATION`时,控制台将输出类似于`File: filename.cpp, Line: 7`的信息,其中`filename.cpp`是当前文件名,而`7`是当前代码所在的行号。 通过以上步骤,我们可以在VS2017中实现打印文件名行号的功能。这对于调试程序或者了解代码执行位置非常有帮助。 新版ffmpeg中好像已经抛弃了tbc ,只需要设置tbn就行,设置方式为向ffmpeg命令行参数中添加-video_track_timescale 30K  30k表示我要设置的目标tbn https://superuser.com/questions/1362410/what-is-fps-tbr-tbn-tbc-in-ffmpeg https://video.stackexchange.com/questions/33134/ffmpeg-resizing-mp4-changes-the-timebase-tbn-tbc ffmpeg 硬压字幕的实现 幺蛾子370: 什么操作可以自动换行 ffmpeg 添加 sei 编码信息和解析 风清扬fzzf: 第二行代码就报错了 ffmpeg 添加 sei 编码信息和解析 风清扬fzzf: 报错了啊 Unknown bitstream filter h264_metadata ffmpeg 视频倍速播放 和 慢速播放 tp20c5: 可以用分数表示,比如1.5倍视频播放用0.67*PTS是不准的,应该写成setpts=2/3*PTS