¿El registro de basicConfig no crea el archivo de registro cuando ejecuto en pycharm?

Cuando corro debajo del código en el terminal, creo un archivo de registro.

import logging logging.basicConfig(filename='ramexample.log',level=logging.DEBUG) logging.debug('This message should go to the log file') logging.info('So should this') logging.warning('And this, too') 

pero cuando ejecuto samecode (con un nombre de archivo diferente = ‘ram.log’) en pycharm no se crea ningún archivo de registro. ¿por qué?

 import logging logging.basicConfig(filename='ram.log',level=logging.DEBUG) logging.debug('This message should go to the log file') logging.info('So should this') logging.warning('And this, too') 

¿Qué tengo que hacer para crear un archivo de registro con pycharm?

Encontré el mismo problema y no encontré ninguna de las respuestas proporcionadas anteriormente aquí funcionaría. Quizás este problema se resolvió hace mucho tiempo para Ramnath Reddy, pero no pude encontrar la respuesta correcta en ningún lugar en línea.

Afortunadamente, encontré una solución a partir del código de un colega agregando las siguientes líneas antes de logging.basicConfig() .

Eliminar todos los controladores asociados con el objeto de logger raíz.

 for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) 

Pruebe y vea si ayuda para quien tuvo el mismo problema.

Esto crea un registro dentro del terminal pycharm utilizando el terminal Py dentro de él. Debe verificar la ubicación de la terminal (intente dir en Windows o pwd en linux / mac). En lugar de simplemente colocar ram.log, use la ruta completa del archivo donde desea que aparezca el archivo. P.EJ

 logging.basicConfig(filename='/Users/Donkey/Test/ram.log', level=logging.DEBUG) 

Maximas tiene razón. La ruta del archivo es relativa al entorno de ejecución. Sin embargo, en lugar de escribir la ruta absoluta, puede probar el enfoque de resolución de ruta dinámica:

 filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'ram.log') logging.basicConfig(filename=filename, level=logging.DEBUG) 

Esto supone que ram.log reside en el mismo directorio con el que contiene el código anterior (para eso se usa __file__ ).