1 #!/usr/bin/python2.4 2 # 3 # 4 # Copyright 2007, The Android Open Source Project 5 # 6 # Licensed under the Apache License, Version 2.0 (the "License"); 7 # you may not use this file except in compliance with the License. 8 # You may obtain a copy of the License at 9 # 10 # http://www.apache.org/licenses/LICENSE-2.0 11 # 12 # Unless required by applicable law or agreed to in writing, software 13 # distributed under the License is distributed on an "AS IS" BASIS, 14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 # See the License for the specific language governing permissions and 16 # limitations under the License. 17 18 """Simple logging utility. Dumps log messages to stdout, and optionally, to a 19 log file. 20 21 Init(path) must be called to enable logging to a file 22 """ 23 24 import datetime 25 26 _LOG_FILE = None 27 _verbose = False 28 _log_time = True 29 30 def Init(log_file_path): 31 """Set the path to the log file""" 32 global _LOG_FILE 33 _LOG_FILE = log_file_path 34 print "Using log file: %s" % _LOG_FILE 35 36 def GetLogFilePath(): 37 """Returns the path and name of the Log file""" 38 global _LOG_FILE 39 return _LOG_FILE 40 41 def Log(new_str): 42 """Appends new_str to the end of _LOG_FILE and prints it to stdout. 43 44 Args: 45 # new_str is a string. 46 new_str: 'some message to log' 47 """ 48 msg = _PrependTimeStamp(new_str) 49 print msg 50 _WriteLog(msg) 51 52 def _WriteLog(msg): 53 global _LOG_FILE 54 if _LOG_FILE is not None: 55 file_handle = file(_LOG_FILE, 'a') 56 file_handle.write('\n' + str(msg)) 57 file_handle.close() 58 59 def _PrependTimeStamp(log_string): 60 """Returns the log_string prepended with current timestamp """ 61 global _log_time 62 if _log_time: 63 return "# %s: %s" % (datetime.datetime.now().strftime("%m/%d/%y %H:%M:%S"), 64 log_string) 65 else: 66 # timestamp logging disabled 67 return log_string 68 69 def SilentLog(new_str): 70 """Silently log new_str. Unless verbose mode is enabled, will log new_str 71 only to the log file 72 Args: 73 # new_str is a string. 74 new_str: 'some message to log' 75 """ 76 global _verbose 77 msg = _PrependTimeStamp(new_str) 78 if _verbose: 79 print msg 80 _WriteLog(msg) 81 82 def SetVerbose(new_verbose=True): 83 """ Enable or disable verbose logging""" 84 global _verbose 85 _verbose = new_verbose 86 87 def SetTimestampLogging(new_timestamp=True): 88 """ Enable or disable outputting a timestamp with each log entry""" 89 global _log_time 90 _log_time = new_timestamp 91 92 def main(): 93 pass 94 95 if __name__ == '__main__': 96 main() 97