是否将Python日志记录设置为在使用dictConfig时覆盖日志文件?
我正在使用是否将Python日志记录设置为在使用dictConfig时覆盖日志文件?,python,logging,Python,Logging,我正在使用dictConfig()配置日志记录。我希望进程每次运行时都覆盖指定的日志文件。我该怎么做 我将filemode视为basicConfig()中的一个设置,但我不知道在dictConfig()配置中该放在哪里 我尝试了这个方法,但得到了一个意外的关键字参数“filemode”错误。我在其他几个地方也试过。Python日志文档非常混乱 LOG_PATH = os.path.join(PROJECT_PATH,'logs') LOG_FILE_NAME
dictConfig()
配置日志记录。我希望进程每次运行时都覆盖指定的日志文件。我该怎么做
我将filemode
视为basicConfig()
中的一个设置,但我不知道在dictConfig()
配置中该放在哪里
我尝试了这个方法,但得到了一个意外的关键字参数“filemode”
错误。我在其他几个地方也试过。Python日志文档非常混乱
LOG_PATH = os.path.join(PROJECT_PATH,'logs')
LOG_FILE_NAME = 'log.'+main.__file__+'.'+time.strftime("%Y-%m-%d")
LOG_FILE_PATH = os.path.join(LOG_PATH,LOG_FILE_NAME)
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': '[%(levelname)s] %(message)s - [pid:%(process)d - %(asctime)s - %(name)s]',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'formatter': 'standard',
'class': 'logging.StreamHandler',
},
'file': {
'level': 'INFO',
'formatter': 'standard',
'class': 'logging.FileHandler',
'filename': LOG_FILE_PATH,
'filemode': 'w',
},
},
'loggers': {
'': {
'handlers': ['console','file'],
'level': 'DEBUG',
'propagate': True
},
},
}
logging.config.dictConfig(os.path.join(LOGGING_CONFIG))
logger = logging.getLogger(__name__)
logger.debug('logger configured')
回答
感谢@Vinay Sajip在下面选择的答案。这是我的更新配置,现在每次运行进程时都会覆盖指定的日志文件。我只是添加了
LOGGING\u CONFIG['handlers']['file']['mode']='w'
LOG_PATH = os.path.join(PROJECT_PATH,'logs')
LOG_FILE_NAME = 'log.'+main.__file__+'.'+time.strftime("%Y-%m-%d")
LOG_FILE_PATH = os.path.join(LOG_PATH,LOG_FILE_NAME)
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': '[%(levelname)s] %(message)s - [pid:%(process)d - %(asctime)s - %(name)s]',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'formatter': 'standard',
'class': 'logging.StreamHandler',
},
'file': {
'level': 'INFO',
'formatter': 'standard',
'class': 'logging.FileHandler',
'filename': LOG_FILE_PATH,
'mode': 'w', # <=== HERE IS THE CHANGE
},
},
'loggers': {
'': {
'handlers': ['console','file'],
'level': 'DEBUG',
'propagate': True
},
},
}
logging.config.dictConfig(os.path.join(LOGGING_CONFIG))
logger = logging.getLogger(__name__)
logger.debug('logger configured')
LOG\u PATH=os.PATH.join(项目路径,'logs')
LOG\u FILE\u NAME='LOG.+main.\u FILE\uu+'.+time.strftime(“%Y-%m-%d”)
LOG\u FILE\u PATH=os.PATH.join(LOG\u PATH,LOG\u FILE\u NAME)
日志记录\u配置={
“版本”:1,
“禁用现有日志记录器”:False,
“格式化程序”:
“标准”:
“格式”:“[%(levelname)s](消息)s-[pid:%(进程)d-%(asctime)s-%(名称)s]”,
},
},
“处理程序”:{
“控制台”:{
“级别”:“调试”,
“格式化程序”:“标准”,
'class':'logging.StreamHandler',
},
“文件”:{
“级别”:“信息”,
“格式化程序”:“标准”,
'class':'logging.FileHandler',
“文件名”:日志文件路径,
“mode”:“w”,#您需要使用模式
而不是文件模式
。通常,您需要使用文档中指定的参数名称来初始化处理程序-有关文件处理程序
,请参阅