How to create a debug log in a different directory apart from current directory in python? -
i tried below code create debug log based on write permission in directory. if directory has write permission create log locally else create log in home directory.
if len(sys.argv) > 1: in range (1,len(sys.argv)): if (sys.argv[i] == "debug"): if os.access("./", os.w_ok) not true: logging.basicconfig(filename="$home/post_debug.log", filemode='a') else: logging.basicconfig(filename="post_debug.log", filemode='a') level_name = sys.argv[i] level = levels.get(level_name, logging.notset) logging.basicconfig(level=level) level_set = 1 elif level_set != 1: level = logging.warning else: level = logging.warning log = logging.getlogger('post') log.setlevel(level) but code goes loop 1 i.e. without write permission , checks log file in current directory [/disks/desperado/hang_logs/home.list/$home/post_debug.log] instead of home directory given below,
traceback (most recent call last): file "/disks/scripts/pp/post.py", line 86, in <module> logging.basicconfig(filename="$home/post_debug.log", filemode='a') file "/usr/pkgs/python/2.7/lib/python2.7/logging/__init__.py", line 1500, in basicconfig hdlr = filehandler(filename, mode) file "/usr/pkgs/python/2.7/lib/python2.7/logging/__init__.py", line 889, in __init__ streamhandler.__init__(self, self._open()) file "/usr/pkgs/python/2.7/lib/python2.7/logging/__init__.py", line 908, in _open stream = open(self.basefilename, self.mode) ioerror: [errno 2] no such file or directory: '/disks/desperado/hang_logs/home.list/$home/post_debug.log' am missing something? share in inputs!
you missing use of expandvars expand $home environment variable properly:
from os.path import expandvars # ... logging.basicconfig(filename=expandvars("$home/post_debug.log"), filemode='a') also, take @ argparse, useful :)
Comments
Post a Comment