| #!/usr/bin/python2.4 |
| # |
| # |
| # Copyright 2007, The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """Simple logging utility. Dumps log messages to stdout, and optionally, to a |
| log file. |
| |
| Init(path) must be called to enable logging to a file |
| """ |
| |
| import datetime |
| |
| _LOG_FILE = None |
| _verbose = False |
| _log_time = True |
| |
| def Init(log_file_path): |
| """Set the path to the log file""" |
| global _LOG_FILE |
| _LOG_FILE = log_file_path |
| print "Using log file: %s" % _LOG_FILE |
| |
| def GetLogFilePath(): |
| """Returns the path and name of the Log file""" |
| global _LOG_FILE |
| return _LOG_FILE |
| |
| def Log(new_str): |
| """Appends new_str to the end of _LOG_FILE and prints it to stdout. |
| |
| Args: |
| # new_str is a string. |
| new_str: 'some message to log' |
| """ |
| msg = _PrependTimeStamp(new_str) |
| print msg |
| _WriteLog(msg) |
| |
| def _WriteLog(msg): |
| global _LOG_FILE |
| if _LOG_FILE is not None: |
| file_handle = file(_LOG_FILE, 'a') |
| file_handle.write('\n' + str(msg)) |
| file_handle.close() |
| |
| def _PrependTimeStamp(log_string): |
| """Returns the log_string prepended with current timestamp """ |
| global _log_time |
| if _log_time: |
| return "# %s: %s" % (datetime.datetime.now().strftime("%m/%d/%y %H:%M:%S"), |
| log_string) |
| else: |
| # timestamp logging disabled |
| return log_string |
| |
| def SilentLog(new_str): |
| """Silently log new_str. Unless verbose mode is enabled, will log new_str |
| only to the log file |
| Args: |
| # new_str is a string. |
| new_str: 'some message to log' |
| """ |
| global _verbose |
| msg = _PrependTimeStamp(new_str) |
| if _verbose: |
| print msg |
| _WriteLog(msg) |
| |
| def SetVerbose(new_verbose=True): |
| """ Enable or disable verbose logging""" |
| global _verbose |
| _verbose = new_verbose |
| |
| def SetTimestampLogging(new_timestamp=True): |
| """ Enable or disable outputting a timestamp with each log entry""" |
| global _log_time |
| _log_time = new_timestamp |
| |
| def main(): |
| pass |
| |
| if __name__ == '__main__': |
| main() |