Python模块_logging模块

loggin日志分级

import logging

logging.basicConfig(
    #设置等级
    level = logging.INFO,
    #设置输出文件名
    filename = 'log/test1.log',
    #设置输出是w模式,即 写模式,覆盖重写,默认为a模式,追加模式
    filemode="w",
    #指定handler输出格式
    format='时间%(asctime)s 文件名%(filename)s 行号:[%(lineno)d] 等级名称:%(levelname)s 日志内容: %(message)s',
    #steam打印到控制台和filename如果同时出现,只会走filename,忽略stream

)

# 为什么 从warning开始才有打印呢,因为logging是分等级的,
# 默认是warning以上的级别才打印输出,可以通过basicConfig()方法设置级别
logging.debug("我是debug message") #无打印输出
logging.info("我是info message") #无打印输出
logging.warning("我是warning message") #
logging.error("我是error message") #
logging.critical("我是critical message") #

 

#补充一下format参数中可能会用到的格式化串:
    %(name)s logger的名称
    %(levelno)s 数字形式的日志级别
    %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s 调用日志输出函数的模块的文件名
    %(module)s 调用日志输出函数的模块名
    %(funcName)s 调用日志输出函数的函数名
    %(lineno)d 调用日志输出函数的语句所在的代码行号
    %(created)f 显示当前时间,用UNIX标准的表示时间,用浮点数表示
    %(relativeCreated)d 输出日志信息时的 自logger创建以来的所用的毫秒数
    %(asctime)s 字符串形式的显示当前时间,默认格式是"2019-08-08 11:11:11,888"  后面的888是毫秒
    %(thread)d 线程ID,可能没有
    %(threadName)s 线程名,可能没有
    %(process)d 进程ID,可能没有
    %(message)s 用户输出的消息

 


 

logging的steam和filename如果同时出现,只会走filename,下面就通过建立logger对象来解决这个问题,达到控制台和文件同时输出

 

import sys
print(sys.version)
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
f_handler = logging.FileHandler("test1_log.log",encoding="utf-8")
s_handler = logging.StreamHandler
s_handler.setLevel(s_handler,logging.DEBUG)
logger.addHandler(f_handler)
logger.addHandler(s_handler)

logger.debug("我是debug")
logger.info("我是info")
#报错,先跳过了,我的python版本是3.7.2
Traceback (most recent call last):
  File "D:/Py_Files/py_project/my_py_1/py1/test1.py", line 387, in <module>
    logger.debug("我是debug")
  File "D:\py3\lib\logging\__init__.py", line 1371, in debug
    self._log(DEBUG, msg, args, **kwargs)
  File "D:\py3\lib\logging\__init__.py", line 1519, in _log
    self.handle(record)
  File "D:\py3\lib\logging\__init__.py", line 1529, in handle
3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)]
    self.callHandlers(record)
  File "D:\py3\lib\logging\__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
TypeError: handle() missing 1 required positional argument: 'record'

 

posted on 2019-07-31 23:57  詹生  阅读(254)  评论(0编辑  收藏  举报

导航