【例】/root/testpmpy/bin/recordLog.py的作用是記錄日誌,記錄的日誌會存放在/root/testpmpy/log下。最新的日誌名稱爲iamrecord.log,之後每次運行都會將上一個iamrecord.log加上時間戳後綴。recordLog.py內容如下
注:舉例僅描述功能,單獨使用沒有實際意義,可以作爲函數嵌入到其它腳本。
import sys, os, time, shutil
import datetime as pydate
root_dir = os.path.dirname(os.path.abspath(__file__)).split('bin')[0]
logfile = None
currentlog = None
def startLog():
global logfile, currentlog
try:
logdir = root_dir + os.sep + 'log'
if not os.path.exists(logdir):
os.makedirs(logdir)
currentlog = logdir + os.sep + "iamrecord" + ".log"
if(os.path.isfile(currentlog)):
logtime = pydate.datetime.now().strftime("%Y-%m-%d_%H.%M.%S")
historylog = currentlog + "." + logtime
#將上一個iamrecord複製爲加上時間戳的iamrecord.log.yyyy-mm-dd_HH.MM.SS
shutil.copyfile(currentlog, historylog)
logfile = open(currentlog, 'w')
except Exception as e:
print(str(e))
writeLog("Start to log:")
print("Start to log:")
def stopLog():
global logfile
try:
time.sleep(0.1)
writeLog("Finish the log.")
logfile.close()
print("Finish the log.")
except Exception as e:
print(str(e))
def writeLog(str):
global logfile
timeStamp = pydate.datetime.now().strftime("%Y-%m-%d %H.%M.%S.%f")
logfile.write(timeStamp + "\t" + str + "\n")
logfile.flush()
def test_today():
#只寫日誌、不輸出到屏幕上
writeLog("Today is Tuesday.")
writeLog("Today is a sunny day.")
def test_cpfile(src_file,tgt_file):
if(os.path.exists(src_file)):
msg = "Copy file from '" + src_file + "' to '" + tgt_file + "'."
#寫日誌、同時也印到屏幕上
print(msg)
writeLog(msg)
shutil.copyfile(src_file, tgt_file)
else:
msg = src_file + " not existed."
print(msg)
writeLog(msg)
if __name__ == '__main__':
startLog()
test_today()
test_cpfile('/root/testpmpy/user_op_log.1','/tmp/tmplog')
stopLog()
說明:
line4,os.path.abspath(__file__) -> 獲取當前腳本的完整路徑,recordLog.py所在的路徑是/bin/, 緊接着.split('bin')[0] -> 以"bin"爲分隔符,得到路徑/root/testpmpy
line10 ,os.path.exists()判斷括號中的文件是否存在
執行recordLog.py輸出如下,注意 test_today() 和 test_cpfile() 的差別 -> 打印到屏幕和寫入日誌文件:
[root@xxx bin]# python3 recordLog.py
Start to log:
Copy file from '/root/testpmpy/user_op_log.1' to '/tmp/tmplog'.
Finish the log.
[root@xxx bin]# cd ../log/
[root@xxx log]# ls -l
total 16
-rw-r--r--. 1 root root 269 Mar 17 17:51 iamrecord.log
-rw-r--r--. 1 root root 269 Mar 17 17:42 iamrecord.log.2020-03-17_17.42.38
-rw-r--r--. 1 root root 269 Mar 17 17:47 iamrecord.log.2020-03-17_17.47.18
-rw-r--r--. 1 root root 0 Mar 17 17:49 iamrecord.log.2020-03-17_17.49.47
-rw-r--r--. 1 root root 269 Mar 17 17:51 iamrecord.log.2020-03-17_17.51.43
[root@xxx log]# cat iamrecord.log
2020-03-17 17.51.43.927020 Start to log:
2020-03-17 17.51.43.927112 Today is Tuesday.
2020-03-17 17.51.43.927161 Today is a sunny day.
2020-03-17 17.51.43.927233 Copy file from '/root/testpmpy/user_op_log.1' to '/tmp/tmplog'.
2020-03-17 17.51.44.027720 Finish the log.
[root@xxx log]#