举例
import logging
class Logger:
def addlog(self):
#打印日志到文件
logpath=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
file=time.strftime('%Y-%m-%d_%H_%M_%S',time.localtime(time.time()))+'.log' #文件名里不能有空格和冒号
logging.basicConfig(level=logging.DEBUG ,
format=' %(asctime)s %(name)-12s %(levelname)-8s %(message)s ' ,
datefmt=' %m-%d %H:%M ' ,
filename=logpath + ' \log\ ' + str(file) ,
filemode=' a ')
#打印日志到控制台
console=logging.StreamHandle()
console.setLevel(logging.DEBUG)
formatter=logging.Formatter( ' %(name)-12s %(levelname)-8s %(message)s ' )
console.setFormatter(formatter)
logging.getLogger( ' ' ) . addHandler(console)
return file
应用的时候:
import Logger
Logger().addlog()
级别 | 数字值 |
---|---|
CRITICAL |
50 |
ERROR |
40 |
WARNING |
30 |
INFO |
20 |
DEBUG |
10 |
NOTSET |
0 |
DEBUG |
详细信息,一般只在调试问题时使用。 |
INFO |
证明事情按预期工作。 |
WARNING |
某些没有预料到的事件的提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足。但是软件还是会照常运行。 |
ERROR |
由于更严重的问题,软件已不能执行一些功能了。 |
CRITICAL |
严重错误,表明软件已不能继续运行了。 |
用logging.basicConfig()方法打印
日志级别: debug < info < warning < error < critical
logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息') logging.info('info级别,正常输出信息,一般用来打印一些正常的操作') logging.warning('waring级别,一般用来打印警信息') logging.error('error级别,一般用来打印一些错误信息') logging.critical('critical 级别,一般用来打印一些致命的错误信息,等级最高')
打印到控制台:
logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s', level=logging.DEBUG) logging.debug('debug 信息') logging.info('info 信息') logging.warning('warning 信息') logging.error('error 信息') logging.critical('critial 信息')
打印到文件,如果在logging.basicConfig()设置filename 和filemode,则只会保存log到文件,不会输出到控制台。
logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别 filename='new.log', filemode='a',## 模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志,#a是追加模式,默认如果不写的话,就是追加模式 format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s' #日志格式 )
Formatters
Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S,下面是Formatter常用的一些信息
%(name)s |
Logger的名字 |
%(levelno)s |
数字形式的日志级别 |
%(levelname)s |
文本形式的日志级别 |
%(pathname)s |
调用日志输出函数的模块的完整路径名,可能没有 |
%(filename)s |
调用日志输出函数的模块的文件名 |
%(module)s |
调用日志输出函数的模块名 |
%(funcName)s |
调用日志输出函数的函数名 |
%(lineno)d |
调用日志输出函数的语句所在的代码行 |
%(created)f |
当前时间,用UNIX标准的表示时间的浮 点数表示 |
%(relativeCreated)d |
输出日志信息时的,自Logger创建以 来的毫秒数 |
%(asctime)s |
字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 |
%(thread)d |
线程ID。可能没有 |
%(threadName)s |
线程名。可能没有 |
%(process)d |
进程ID。可能没有 |
%(message)s |
用户输出的消息 |
来源,具体请查看以下链接
https://www.cnblogs.com/nancyzhu/p/8551506.html