Ghi log trong python bằng file CSV | Laptrinhcanban.com

HOME › >>

Ghi log trong python bằng file CSV

Hướng dẫn cách ghi log trong python đơn giản bằng file CSV. Bằng cách kết hợp mở và ghi file CSV trong python, bạn sẽ học được cách ghi log vào file CSV bằng phương thức write() trong python sau bài học này.

Ghi log trong python | phương thức write()

Ứng dụng phương mở file, đóng file và ghi file CSV trong python, chúng ta có thể tạo ra một hàm ghi log trong python vào file CSV đơn giản sau đây:

import os
import datetime
def outfilewrite(log_name):
#Tạo đường dẫn thư mục log file
log_dir_path='./_logfile'
os.makedirs(log_dir_path,exist_ok=True)

#Lấy ngày tháng năm tạo log file
d = datetime.datetime.now()
timestr=d.strftime('%Y%m%d')

#Chỉ định tên log file
logfile_name= (log_name+"_"+timestr+'.csv')
try:
#Mở file log
outfile=open(os.path.join(log_dir_path,logfile_name),'a+')

#Ghi header của file csv vào logfile
outfile.write("{},{},{},{}\n".format('No','Work','Result','Detail'))
except PermissionError :
print("\n Error : Cant open logfile. Please Try again")
input(">>")
sys.exit()
return outfile

Lưu ý là bạn cũng có thể chỉ định file log với đuôi .txt thay cho .csv ở trên. Tuy nhiên khi đọc file log thì định dạng CSV có thể nhìn rõ các cột với nội dung file log đã ghi vào, nên Kiyoshi khuyên bạn dùng định dạng .csv hơn trong chương trình này.

Lại nữa, khi tạo hàm trên chúng ta đã sử dụng các kiến thức mà bạn đã học tại các bài viết sau đây:

Cách ghi log trong python bằng hàm vừa tạo

Ví dụ, chúng ta có một thư mục có cấu trúc sau:

  |data/
  |--dir1
  |--make_log.py

Để sử dụng hàm, trước tiên chúng ta chạy hàm và gán kết quả của hàm là một file object vào một biến bất kỳ.

logfile=outfilewrite("new_log")

Khi đó, một file log có tên dạng new_log_yyyymmdd.csv sẽ được tạo ra trong thư mục _logfile như sau:

  |data/
  |--dir1
  |--_logfile
  |  |--new_log_20210518.csv
  |--make_log.py

Sau đó, tại bất cứ vị trí nào trong chương trình mà bạn cần ghi log trong python, hãy dùng phương thức write() với biến đó, bằng nhiều kiểu ghi log sau đây:

Ghi log nội dung tùy ý vào một dòng trong file log:

logfile.write("log line 1\n")

Ghi log nội dung vào các cột khác nhau trong file log:

logfile.write("{},{},{}\n".format('1','Creat log file','Done'))

logfile.write("{},{},{},{}\n".format('2','Write log','Eror','PermissionError'))

Kết quả:
Ghi log trong python

Bạn có thể dùng try catch với Exception trong python để lấy lỗi trả về từ python và ghi lỗi đó vào file log như sau:

try:
#chạy xử lý
log_conttent1 = ["1","Creat Log file","Done",""]
except Exception as e:
log_conttent1 = ["1","Creat Log file","Error",e]

log_conttent.append(log_conttent1)

Trong đó, e chính là nội dung lỗi mà Python trả về nếu như xử lý bị lỗi khi chạy.

Ngoài ra bạn cũng có thể lưu trữ nội dung cần ghi vào file log dưới dạng list và sau đó ghi vào log file như sau:

log_conttent=[]

#chạy xử lý 1
log_conttent1 = ["1","Creat Log file","Error",""]
log_conttent.append(log_conttent1)

#chạy xử lý 2
log_conttent2 = ["2","write log file","Error","PermissionError"]
log_conttent.append(log_conttent2)

#chạyxử lý 3
log_conttent3 = ["3","write log","Done",""]
log_conttent.append(log_conttent3)
#...

#Sau khi hoàn thành các xử lý, ghi các nội dung log vào file log
for log in log_conttent:
logfile.write("{},{},{},{}\n".format(log[0],log[1],log[2],log[3]))
logfile.close()

Kết quả:
Ghi log trong python

Sau khi hoàn tất quá trình ghi log vào file CSV rồi, đừng quên sử dụng logfile.close() để đóng file log nhé.

Tổng kết và thực hành

Trên đây Kiyoshi đã hướng dẫn bạn về cách ghi log trong python bằng file CSV rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

URL Link

https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/csv-excel-json-xml-pdf/ghi-log-trong-python/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.