Home | History | Annotate | Download | only in testrunner
      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