Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否将Python日志记录设置为在使用dictConfig时覆盖日志文件?_Python_Logging - Fatal编程技术网

是否将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”,#您需要使用
模式
而不是
文件模式
。通常,您需要使用文档中指定的参数名称来初始化处理程序-有关
文件处理程序
,请参阅