Python, choose logging files' directory
Question:
I am using the Python logging library and want to choose the folder where the log files will be written.
For the moment, I made an instance of TimedRotatingFileHandler
with the entry parameter filename="myLogFile.log"
. This way myLogFile.log
is created on the same folder than my python script. I want to create it into another folder.
How could I create myLogFile.log
into , let’s say, the Desktop folder?
Answers:
Simple give a different filename like filename=r"C:UserMatiasDesktopmyLogFile.log
Specify an absolute path when creating instance TimedRotatingFileHandler:
from logging.handlers import TimedRotatingFileHandler
h = TimedRotatingFileHandler('/home/user/Desktop/myLogFile.log')
or
from logging.handlers import TimedRotatingFileHandler
h = TimedRotatingFileHandler('C:\Users\user\Desktop\myLogFile.log')
Let’s say logs
directory is in the parent directory of the current directory then you can use below 2 lines, to provide that location irrespective of the underlying os
.
import os
log_dir = os.path.join(os.path.normpath(os.getcwd() + os.sep + os.pardir), 'logs')
log_fname = os.path.join(log_dir, 'log_file_name.log')
This is how I soleved it in linux.
# log_cfg.yaml
handlers:
file_handlers:
...
filename = log//error.log
I am using the Python logging library and want to choose the folder where the log files will be written.
For the moment, I made an instance of TimedRotatingFileHandler
with the entry parameter filename="myLogFile.log"
. This way myLogFile.log
is created on the same folder than my python script. I want to create it into another folder.
How could I create myLogFile.log
into , let’s say, the Desktop folder?
Simple give a different filename like filename=r"C:UserMatiasDesktopmyLogFile.log
Specify an absolute path when creating instance TimedRotatingFileHandler:
from logging.handlers import TimedRotatingFileHandler
h = TimedRotatingFileHandler('/home/user/Desktop/myLogFile.log')
or
from logging.handlers import TimedRotatingFileHandler
h = TimedRotatingFileHandler('C:\Users\user\Desktop\myLogFile.log')
Let’s say logs
directory is in the parent directory of the current directory then you can use below 2 lines, to provide that location irrespective of the underlying os
.
import os
log_dir = os.path.join(os.path.normpath(os.getcwd() + os.sep + os.pardir), 'logs')
log_fname = os.path.join(log_dir, 'log_file_name.log')
This is how I soleved it in linux.
# log_cfg.yaml
handlers:
file_handlers:
...
filename = log//error.log