Python中使用logging模块实现日志输出到文件和控制台
在Python中,可以使用logging模块来实现日志的输出到文件和控制台。
首先,需要导入logging模块:
import logging
然后,可以通过下面的代码来配置日志的输出格式和级别:
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
filename='mylog.log',
filemode='w')
上面的代码中,level参数用于指定日志的输出级别,可以是DEBUG、INFO、WARNING、ERROR或者CRITICAL;format参数用于指定日志的输出格式;filename参数用于指定日志文件的名称;filemode参数用于指定打开日志文件的模式,可以是w(覆盖写)或者a(追加写)。
接下来,可以通过下面的代码来输出日志到文件和控制台:
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
在上面的代码中,logging.debug()函数用于输出调试信息;logging.info()函数用于输出一般信息;logging.warning()函数用于输出警告信息;logging.error()函数用于输出错误信息;logging.critical()函数用于输出严重错误信息。
此时,运行上面的代码,会在控制台输出日志信息,并且会在当前目录下创建一个名为mylog.log的文件,其中包含了同样的日志信息。
如果只想将日志输出到文件,而不在控制台显示,可以将上面的代码中的filename参数设置为'',然后通过下面的代码来输出日志到文件:
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('mylog.log')
fh.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
上面的代码中,logging.getLogger()函数用于获取一个日志记录器;logger.setLevel()方法用于设置日志记录器的级别;logging.FileHandler()类用于创建一个FileHandler对象,用于将日志输出到文件;fh.setLevel()方法用于设置FileHandler的级别;logging.Formatter()类用于设置日志输出格式;fh.setFormatter()方法用于设置FileHandler的格式。之后,通过logger.addHandler()方法来将FileHandler添加到日志记录器中。
此时,运行上面的代码,会将日志输出到mylog.log文件中,而不在控制台显示。
总结起来,以上就是在Python中使用logging模块实现日志输出到文件和控制台的方法。
