我想在Python 3.6&amp ;;中创建一个日志文件。节省不同操作的时间。
所以我使用了这段代码:
def create_logger(logFile, fileLogLevel, streamLogLevel):
# create logger for "Sample App"
logger = logging.getLogger('Seller Explosion')
logger.setLevel(logging.INFO)
# create file handler which logs WARNING messages
fh = logging.FileHandler(logFile, mode='w')
fh.setLevel(fileLogLevel)
# create console handler with a higher log level
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(streamLogLevel)
# create formatter and add it to the handlers
formatter = logging.Formatter('[%(asctime)s] %(levelname)8s --- %(message)s ' +
'(%(filename)s:%(lineno)s)', datefmt='%Y-%m-%d %H:%M:%S')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(ch)
logger.addHandler(fh)
return logger
执行代码时我正在使用以下命令
logger = create_logger('<path to my folder>/TimeLog.log', logging.WARNING, logging.WARNING)
startTime=time.ctime()
logTime="Start Time for uploading: "+startTime
logger.info(logTime)
但是在走向我的路径时,我发现TimeLog.log
是一个大小为0字节的空白文件。你能告诉我我在做什么错误吗?
答案 0 :(得分:2)
您可以将处理程序设置为在vision
级别进行过滤:
WARNING
和
logger = create_logger(..., logging.WARNING, logging.WARNING)
然后记录了fh.setLevel(fileLogLevel)
# ...
ch.setLevel(streamLogLevel)
级别的消息。 INFO
是来自INFO
的较低,不太严重级别,因此会被处理程序过滤掉。
您需要以WARNING
级别或更高级别(WARNING
,WARNING
或ERROR
或数字值30及以上),或将处理程序配置为处理较低级别(CRITICAL
,INFO
或DEBUG
,或数字值为20或更低)。
例如,NOTSET
会将数据添加到您的日志文件中。如果您使用logger.warn(logTime)
作为logging.INFO
的第二个参数,则create_logger()
调用也会产生相同的效果。
来自Handler.setLevel()
method documentation:
将此处理程序的阈值设置为level。 将忽略不如级别严重的记录消息。创建处理程序时,级别设置为
logger.info()
(这将导致处理所有消息。
大胆强调我的;另请参阅Logging levels section了解其排序和数值。
请注意,在日志消息中创建带有时间戳的日志消息是相当多余的,因为您的日志格式已包含时间戳:
NOTSET