我正在尝试在python3.6.8中创建自己的记录器,以将输出发送到stdout和日志文件(按日期选择,如果日志文件在创建的今天还不存在,如果已经有一个具有相同日期的文件,只需附加)
from datetime import date
import logging
import logging.handlers
class Log:
def __init__(self):
pass
def getCleanerLogger(self,moduleName, logFolder, format):
filename = logFolder+ str(date.today()) + '-log.log'
handler = logging.FileHandler(filename)
shandler = logging.StreamHandler()
shandler.setLevel(logging.INFO)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter(format)
handler.setFormatter(formatter)
shandler.setFormatter(formatter)
logger = logging.getLogger(moduleName)
logger.addHandler(handler)
logger.addHandler(shandler)
print("I've been called")
return logger
import Conf
conf = Conf.configuration()
print(conf['logFolder'] + " " + conf['logFormat'])
logger = Log()
logger = logger.getCleanerLogger("Log", conf['logFolder'], conf['logFormat'])
logger.info('initializing')
logger.debug('initializing debug')
在json conf文件中,这些是我加载的键
"logFolder": "log/",
"logFormat": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
日志文件是用正确的逻辑创建的,但是控制台和日志文件中都没有日志记录,只有打印到stdout,没有出现错误或异常,我真的不明白为什么这样做不起作用。加载basiconfig后,我只能使用logging.root.level('msg')登录
每个处理程序都有自己的日志记录级别,但是
logger
也有全局日志记录级别,全局日志记录级别具有更大的优先级,因此您必须将此级别更改为不阻止处理程序的级别-即最小的工作代码,很少有小的改动
它不使用带有设置的文件,所以每个人都可以轻松地复制并运行它
顺便说一句:我根据PEP 8 Style Guide for Python Code更改了一些名称
相关问题 更多 >
编程相关推荐