Package config_common :: Module rhn_log
[hide private]
[frames] | no frames]

Source Code for Module config_common.rhn_log

  1  # 
  2  # Copyright (c) 2008--2016 Red Hat, Inc. 
  3  # 
  4  # This software is licensed to you under the GNU General Public License, 
  5  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
  6  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
  7  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
  8  # along with this software; if not, see 
  9  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
 10  # 
 11  # Red Hat trademarks are not licensed under GPLv2. No permission is 
 12  # granted to use or replicate Red Hat trademarks that are incorporated 
 13  # in this software or its documentation. 
 14  # 
 15   
 16  import os 
 17  import stat 
 18  import sys 
 19  import time 
 20  import traceback 
 21   
22 -class Logger:
23 debug_level = 1 24 logfile = None 25
26 - def log_debug(self, debug_level, *args):
27 if debug_level <= self.debug_level: 28 outstr = "%s %s: %s\n" % ( 29 time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())), 30 self.get_caller(), 31 " ".join([str(it) for it in args])) 32 sys.stdout.write(outstr) 33 34 if not self.logfile is None: 35 self.write_to_logfile(outstr)
36
37 - def log_to_file(self, debug_level, *args):
38 if debug_level <= self.debug_level: 39 outstr = "%s %s: %s\n" % ( 40 time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())), 41 self.get_caller(), 42 " ".join([str(it) for it in args])) 43 if not self.logfile is None: 44 self.write_to_logfile(outstr)
45 46
47 - def write_to_logfile(self, logstr):
48 if os.access(self.logfile, os.F_OK|os.R_OK|os.W_OK): 49 logname = open(self.logfile, "a") 50 logname.write(logstr) 51 logname.close() 52 else: 53 #pkilambi: bug#179367: check permissions before writing. 54 #non-root users will not have permissions to create the file 55 56 # Set to root-RW-only if we have to create the file 57 mode = stat.S_IRUSR | stat.S_IWUSR # octal 0o600 58 try: 59 # Need to use os.open to insure initial permissions 60 fd = os.open(self.logfile, os.O_WRONLY | os.O_CREAT, mode) 61 logname = os.fdopen(fd, 'w') 62 logname.write(logstr) 63 logname.close() 64 except: 65 print("does not have permissions to create file %s" % (self.logfile)) 66 sys.exit(1)
67
68 - def set_logfile(self, filename):
70
71 - def set_debug_level(self, debug_level):
73
74 - def get_debug_level(self):
75 return Logger.debug_level
76
77 - def get_caller(self, caller_offset=4):
78 tbStack = traceback.extract_stack() 79 callid = len(tbStack) - caller_offset 80 module = tbStack[callid] 81 module_file = os.path.basename(module[0]) 82 module_file = module_file.split('.', 1)[0] 83 return "%s.%s" % (module_file, module[2])
84
85 - def log_error(self, *args):
86 outstr = " ".join([str(it) for it in args]) 87 sys.stderr.write(outstr) 88 sys.stderr.write("\n") 89 if not self.logfile is None: 90 self.write_to_logfile(outstr)
91
92 - def die(self, error_code, *args):
93 self.log_error(args) 94 sys.exit(error_code)
95
96 -def set_debug_level(*args):
97 return Logger().set_debug_level(*args)
98
99 -def get_debug_level(*args):
100 return Logger().get_debug_level(*args)
101
102 -def set_logfile(*args):
103 return Logger().set_logfile(*args)
104
105 -def log_debug(*args):
106 return Logger().log_debug(*args)
107
108 -def log_to_file(*args):
109 return Logger().log_to_file(*args)
110
111 -def log_error(*args):
112 return Logger().log_error(*args)
113
114 -def die(error_code, *args):
115 Logger().log_error(*args) 116 sys.exit(error_code)
117