欢迎访问宙启技术站
智能推送

Python中使用logging模块实现日志输出到文件和控制台

发布时间:2024-01-09 23:05:03

在Python中,可以使用logging模块来实现日志的输出到文件和控制台。

首先,需要导入logging模块:

import logging

然后,可以通过下面的代码来配置日志的输出格式和级别:

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(levelname)s %(message)s',
                    filename='mylog.log',
                    filemode='w')

上面的代码中,level参数用于指定日志的输出级别,可以是DEBUGINFOWARNINGERROR或者CRITICALformat参数用于指定日志的输出格式;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模块实现日志输出到文件和控制台的方法。