之前的时候我记录日志都是自己手写,将内容写进文件,总觉得这样好low,今天在写企业微信脚本的时候,就查了下,果然有logging模块,就直接拿过来用了,百度代码如下logging.basicConfig(
level=logging.DEBUG,#loglevel
format='%(asctime)s%(filename)s:%(levelname)s%(message)s',#logformat
datefmt='%Y-%m-%d%A%H:%M:%S',#recordtime
filename='./log/log.txt',#logfilename
filemode='w')
console=logging.StreamHandler()#consolehandler
console.setLevel(logging.INFO)#handlerlevel
formatter=logging.Formatter('%(asctime)s%(filename)s:%(levelname)s%(message)s')#handlerformat
console.setFormatter(formatter)
logging.getLogger().addHandler(console)
结果发现,日志可以记录,但是中文会乱码(吐槽下百度搜来的代码有些真的是胡乱写)
于是看了下文档
修改代码如下LOG_FORMAT="%(asctime)s-%(levelname)s-%(message)s"
DATE_FORMAT="%m/%d/%Y%H:%M:%S%p"
fp=logging.FileHandler('./log/log.txt',encoding='utf-8')
logging.basicConfig(level=logging.DEBUG,format=LOG_FORMAT,datefmt=DATE_FORMAT,handlers=[fp])
logging.debug(msg)
乱码问题解决
另外,查询文档得到如下Logger:日志,暴露函数给应用程序,基于日志记录器和过滤器级别决定哪些日志有效。
LogRecord :日志记录器,将日志传到相应的处理器处理。
Handler :处理器, 将(日志记录器产生的)日志记录发送至合适的目的地。StreamHandler是输出到控制台命令行,FileHandler是输出到文件
Filter :过滤器, 提供了更好的粒度控制,它可以决定输出哪些日志记录。
Formatter:格式化器, 指明了最终输出中日志记录的布局。
日志级别如下,可以按照自己的需求选用,系统默认输出Warning级别以上的消息