我想在Python3.6中创建一个日志文件&为不同的操作节省时间。
所以我用了这个代码:
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字节大小的空白文件。你能告诉我我犯了什么错误吗?
发布于 2018-01-17 15:15:15
将处理程序设置为在WARNING级别上进行筛选:
logger = create_logger(..., logging.WARNING, logging.WARNING)和
fh.setLevel(fileLogLevel)
# ...
ch.setLevel(streamLogLevel)然后记录一个INFO级别的消息。INFO是来自WARNING的一个较低、不太严重的级别,因此由处理程序过滤掉。
您需要在WARNING级别或更高级别(因此WARNING、ERROR或CRITICAL,或数值30及以上)登录,或者配置处理程序以处理较低级别(例如INFO、DEBUG或NOTSET,或者数值为20或更低)。
例如,logger.warn(logTime)会将数据添加到日志文件中。如果您使用logging.INFO作为create_logger()的第二个参数,那么logger.info()调用也会产生同样的效果。
将此处理程序的阈值设置为“级别”。低于级别的日志记录消息将被忽略。创建处理程序时,级别设置为
NOTSET(这将导致处理所有消息。
粗体强调我的;也见 section的排序和数值。
注意,在日志消息中创建带有时间戳的日志消息是相当多余的,因为日志格式已经包含一个时间戳:
>>> startTime = time.ctime()
>>> logTime = "Start Time for uploading: " + startTime
>>> logger.warn(logTime)
[2018-01-17 16:36:20] WARNING --- Start Time for uploading: Wed Jan 17 16:36:20 2018 (<stdin>:1)https://stackoverflow.com/questions/48304157
复制相似问题