Untitled

Run Settings
LanguagePython
Language Version
Run Command
#!/usr/bin/env python3 __doc__ = ''' Viết một chương trình log ra 1 file: - Ở level INFO, với message là "started" khi chương trình đã chạy - Ở level ERROR, bắt exception xảy ra và log nội dung (message) của exception (Exception tùy ý). - Ở level DEBUG, với message "running" sau mỗi 1 s - Sau 3s, log ra ở level INFO dòng "exiting..." rồi kết thúc chương trình. Yêu cầu: - Thực hiện ghi vào file theo format: ``%(levelname)s - %(message)s - %(asctime)s`` - Đọc thêm về `format logging` tại đây hoặc gg: https://docs.python.org/3/library/logging.html#logrecord-attributes ''' import logging import os import time def logging_files(filepath): '''Trả về list chứa các dòng đọc từ file sau khi thực hiện logging vào file Thực hiện 2 yêu cầu: 1. Logging vào file như yêu cầu tại ``__doc__`` 2. Sau đó mở lại file, đọc và trả về list chứa các dòng đọc được từ file :rtype list: ''' # Sửa tên và function cho phù hợp, trả về kết quả yêu cầu. result = [] # Thực hiện logging như yêu cầu, viết code bên dưới logging.basicConfig(filename = filepath,level = logging.DEBUG, format = '%(levelname)s - %(message)s - %(asctime)s') logging.info('started') try: print('thầy cho bài khó quá') except Exception as e: logging.error('error message') for i in range(3): logging.debug('running') time.sleep(1) logging.info('exciting') # Thực hiện đọc và mở lại file, gán result là list chứa các dòng đọc được # Xoá dòng sau và viết code vào đây set các giá trị phù hợp # Thông báo sử dụng xong logging, flush hết dữ liệu ra output. logging.shutdown() with open(filepath) as f: for line in f: result.append(line) # Xoá file sau khi đã thực hiện xong yêu cầu os.remove(filepath) return result def solve(): '''Học viên không cần viết code trong hàm `solve`, chỉ thực hiện đổi tên lại tên function của mình cho phù hợp :rtype list: ''' import tempfile _, fn = tempfile.mkstemp() result = logging_files(fn) return result def main(): print(solve()) if __name__ == "__main__": main()
Editor Settings
Theme
Key bindings
Full width
Lines