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
19log file.
20
21Init(path) must be called to enable logging to a file
22"""
23
24import datetime
25
26_LOG_FILE = None
27_verbose = False
28_log_time = True
29
30def 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
36def GetLogFilePath():
37  """Returns the path and name of the Log file"""
38  global _LOG_FILE
39  return _LOG_FILE
40
41def 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
52def _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
59def _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
69def 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
82def SetVerbose(new_verbose=True):
83  """ Enable or disable verbose logging"""
84  global _verbose
85  _verbose = new_verbose
86
87def 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
92def main():
93  pass
94
95if __name__ == '__main__':
96  main()
97