Đầu ra bảng điều khiển nhật ký python vào tệp

Trong bài viết này, bạn sẽ tìm hiểu về mô-đun ghi nhật ký python để ghi nhật ký sự kiện và tại sao ghi nhật ký lại tốt hơn in

Phần được bảo hiểm
  1. Giới thiệu về ghi nhật ký Python
  2. Chúng ta có thể không đạt được điều tương tự với các câu lệnh in không?
  3. Tại sao In không đủ để Ghi nhật ký?
  4. Ưu điểm của việc sử dụng mô-đun Ghi nhật ký Python trên bản in
  5. Các cấp độ ghi nhật ký
  6. Một ví dụ đơn giản về Ghi nhật ký
  7. Định dạng nhật ký của chúng tôi để có thêm thông tin
  8. Đăng nhập vào một tập tin
  9. Đăng nhập từ nhiều mô-đun
  10. Trình ghi gốc
  11. Định cấu hình Trình ghi nhật ký chính
  12. Một số tình huống ghi nhật ký
    1. Ghi thư vào tệp bằng phương pháp FileHandler
    2. Ghi thông báo vào bảng điều khiển bằng phương thức StreamHandler
  13. Ưu điểm của việc cấu hình Main Logger
  14. Video Youtube khi đăng nhập

💡

Nếu bạn thích xem video Youtube hơn đọc blog, hãy nhấp vào liên kết này hoặc kéo xuống dưới cùng

Giới thiệu về ghi nhật ký Python

Nói chung, Ghi nhật ký là một hoạt động quan trọng trong bất kỳ ứng dụng phát triển phần mềm không tầm thường nào

Nó thông báo cho bạn về luồng sự kiện trong toàn bộ ứng dụng của bạn với siêu dữ liệu hữu ích khác như thời gian xảy ra sự kiện, mức độ nghiêm trọng của sự kiện, số dòng ghi sự kiện, chức năng hoặc mô-đun trong đó sự kiện

Bạn có thể dễ dàng kiểm soát loại thông tin mà bạn quyết định đưa vào tệp nhật ký của chúng tôi cũng như cách thông tin đó hiển thị

Chúng ta có thể không đạt được điều tương tự với các câu lệnh in không?

In ra những thứ chắc chắn là hữu ích. Nó chắc chắn sẽ đủ điều kiện là một trong những chức năng được sử dụng rộng rãi nhất trong bất kỳ ngôn ngữ lập trình nào. Nó là một công cụ tuyệt vời để truyền tải thông tin liên quan đến người lập trình trong quá trình thực hiện chương trình

Nó cũng là một công cụ sửa lỗi tuyệt vời. Hãy xem một ví dụ

# printing.py

print[1/0]

Khi bạn chạy đoạn mã trên, bạn sẽ nhận được đầu ra sau

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero

Có rất nhiều thông tin ở đây. Bạn có số dòng mà trình thông dịch python đã phát hiện lỗi, câu lệnh python đã tạo ra lỗi và cả bản chất của lỗi. Trong trường hợp trên, đó là một

# printing.py

try:
    1/0
except Exception as e:
    print[e]
5

Giả sử bạn không muốn đưa ra lỗi

# printing.py

try:
    1/0
except Exception as e:
    print[e]
6. Trong trường hợp đó, bạn có thể sử dụng khối thử ngoại trừ

# printing.py

try:
    1/0
except Exception as e:
    print[e]

Khi bạn thực thi đoạn mã trên, nó sẽ in phép chia cho 0

Thông thường, bạn nên xử lý các ngoại lệ trong mã của mình bằng cách sử dụng thử và ngoại trừ hơn là để nó thất bại. Tại sao?

Nhưng hiện tại chúng tôi đang thiếu các chi tiết liên quan hữu ích để gỡ lỗi. Chúng tôi đang thiếu tên tệp và số dòng xảy ra lỗi. Để giải quyết vấn đề này, chúng tôi có thể đưa thư viện

# printing.py

try:
    1/0
except Exception as e:
    print[e]
6 trở lại để nắm bắt nhiều chi tiết khác về ngoại lệ

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]

Bằng cách này, chúng tôi không chỉ nhận được thông tin về python

# printing.py

try:
    1/0
except Exception as e:
    print[e]
6 mà còn cho phép dòng mã của chúng tôi kết thúc thành công mà không gặp sự cố

Bất chấp tất cả những lợi ích rõ ràng, In ấn vẫn không phải là công cụ tốt nhất để ghi nhật ký

Tại sao In không đủ để Ghi nhật ký?

Dưới đây là 4 nguyên nhân khiến bản in không phù hợp

1. Quá trình in không cung cấp cho chúng tôi dấu thời gian của lỗi

Một trong những thông tin quan trọng mà bản in bỏ lỡ là dấu thời gian xảy ra lỗi cụ thể. Điều này có thể chứng minh là một yếu tố lớn trong khi gỡ lỗi ứng dụng của chúng tôi

Nó có thể không quan trọng đối với các đoạn mã nhỏ mà chúng tôi chạy và kiểm tra trong thời gian thực. Nhưng đối với các ứng dụng lớn hơn, việc thiếu dấu thời gian cho một lỗi chắc chắn sẽ gây ảnh hưởng rất lớn. Chắc chắn chúng ta có thể sử dụng mô-đun

# printing.py

try:
    1/0
except Exception as e:
    print[e]
9 để thêm phần thông tin bổ sung đó. Nhưng sau đó, chúng ta sẽ làm cho cơ sở mã của mình trở nên lộn xộn hơn bằng cách thêm các đoạn mã không liên quan để bù cho thông tin còn thiếu thay vì sử dụng thứ đã giải quyết mọi thứ chúng ta cần - ghi nhật ký

2. In ra bảng điều khiển là cách làm không tốt cho các ứng dụng quy mô lớn

Hãy tưởng tượng điều này. Bạn đã viết một thư viện Python mà những người khác hiện đang sử dụng để giải quyết một mục đích nào đó. Bạn rất hào phóng với việc sử dụng chức năng in trong cơ sở mã của mình. Vì vậy, người dùng sẽ thấy các loại câu lệnh in khác nhau mà họ có thể sẽ không nhận ra

Đây là thực hành rất xấu và do đó nên tránh

3. Không thể lưu tin nhắn in vào mọi loại tệp

Khi bạn in tin nhắn, trước tiên nó được chuyển đổi thành chuỗi văn bản. Bạn có thể sử dụng đối số tệp trong bản in để lưu thư của mình vào một tệp. Tuy nhiên, nó phải là một đối tượng có phương thức

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
0. Do đó không thể ghi tin nhắn vào tệp nhị phân

4. Khó phân loại báo in

Hãy tưởng tượng một tệp nhật ký chứa tất cả các loại câu lệnh in. Khi ứng dụng của bạn đã trải qua nhiều giai đoạn phát triển khác nhau và cuối cùng là đi vào sản xuất, việc phân loại và gỡ lỗi các câu lệnh in đó sẽ trở nên rất khó khăn

Bạn có thể lập luận rằng bạn có thể sửa đổi báo cáo in của mình để phù hợp với các giai đoạn khác nhau và cung cấp thêm thông tin. Nhưng điều đó sẽ thêm rác vào cơ sở mã của bạn để bù đắp cho thứ gì đó in không phù hợp và thậm chí không được xây dựng cho

Ưu điểm của việc sử dụng mô-đun Ghi nhật ký Python

Mô-đun ghi nhật ký trong Python cung cấp giải pháp cho tất cả các vấn đề trên

  1. Bạn có thể dễ dàng kiểm soát định dạng của các tin nhắn bạn đăng nhập. Mô-đun đi kèm với rất nhiều thuộc tính hữu ích mà bạn có thể quyết định đưa vào nhật ký của mình
  2. Bạn có thể ghi lại tin nhắn với các mức độ khẩn cấp/cảnh báo/thông tin khác nhau. Điều này cho phép bạn dễ dàng phân loại các thông báo nhật ký và giúp quá trình gỡ lỗi của bạn trở nên dễ dàng hơn
  3. Bạn có thể đặt đích đến của nhật ký của mình thành hầu hết mọi thứ. Ngay cả với ổ cắm
  4. Không can thiệp vào trải nghiệm người dùng nếu mô-đun của bạn đang được nhập bởi người dùng khác

Vì vậy, hãy đi sâu vào thế giới đăng nhập bằng Python

Các cấp độ ghi nhật ký

Bây giờ mô-đun ghi nhật ký đã là một phần của thư viện chuẩn python. Vì vậy, chỉ cần nhập nhật ký và chúng tôi đã sẵn sàng để bắt đầu. Theo mặc định, bạn sẽ thấy rằng có 5 cấp độ ghi nhật ký tiêu chuẩn cho biết mức độ nghiêm trọng của các sự kiện. họ đang

  1. gỡ lỗi [Cấp 10]
  2. thông tin [Cấp 20]
  3. cảnh báo [Cấp 30]
  4. lỗi [Cấp 40]
  5. quan trọng [Cấp 50]

Một ví dụ đơn giản về Ghi nhật ký

Hãy xem cách triển khai cơ bản của Ghi nhật ký

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
0

Khi chúng tôi chạy đoạn mã trên, chúng tôi nhận được một cái gì đó như thế này

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
1

Lưu ý cách nhật ký gỡ lỗi và thông tin không được ghi lại. Điều này là do cảnh báo là mức ghi nhật ký mặc định. Mọi mức độ nghiêm trọng dưới cảnh báo sẽ bị bỏ qua, trừ khi chúng tôi ghi đè lên mức mặc định. Để thay đổi mức ghi nhật ký mặc định, bạn phải sử dụng phương pháp

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
1 trong ghi nhật ký. Bạn phải chuyển một đối số có tên là
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
2 và đặt nó ở cấp độ ghi nhật ký mà chúng tôi muốn xem nhật ký của mình

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
4

Khi bạn chạy tập lệnh trên, bạn sẽ thấy rằng tất cả các thông báo có mức độ nghiêm trọng của lỗi trở lên đang được ghi lại. Nó đơn giản mà

Định dạng nhật ký của chúng tôi để có thêm thông tin

Bây giờ lượng thông tin ở đây là không đủ. Không phải tôi đã khoe khoang về các thuộc tính kỳ diệu của mô-đun ghi nhật ký trước đó sao? . Nếu bạn kiểm tra trang thuộc tính bản ghi nhật ký, bạn có thể tìm thấy một bảng gồm tất cả các tên thuộc tính cùng với các định dạng và mô tả có thể sử dụng của chúng mà bạn có thể đưa vào nhật ký của mình. Hãy thử chọn một vài trong số những cái quan trọng

Giả sử chúng tôi muốn có nhật ký của mình với các chi tiết sau

  1. Thông điệp tường trình
  2. Mức độ nghiêm trọng của thông điệp tường trình
  3. Dấu thời gian mà tin nhắn đã được ghi lại
  4. Tên của mô-đun nơi xảy ra sự kiện
  5. Số dòng của mô-đun đã đăng ký nhật ký

Hãy viết một đoạn trích để bao gồm những thông tin này. Tôi đang tạo một biến có tên là

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
3 và gán cho nó một chuỗi đại diện cho hình thức nhật ký của tôi

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
6

Đoạn mã trên sẽ trả lại cho chúng tôi tất cả các thuộc tính logrecord mà chúng tôi muốn nhận. Các bản ghi sẽ trông giống như thế này

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
7

Trong suốt thời gian qua, bạn có thắc mắc

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
4 có nghĩa là gì trong nhật ký không?

Đăng nhập vào một tập tin

Thông thường các bản ghi có ít mục đích được in ra bàn điều khiển. Lý tưởng nhất là bạn muốn lưu trữ chúng trong một tệp. Để làm điều đó, bạn phải sử dụng đối số

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
5 và đặt nó thành tên tệp hoặc đường dẫn đầy đủ của tên tệp bạn chọn. Mỗi khi bạn chạy ứng dụng của mình, nhật ký mới sẽ được thêm vào tệp

# printing.py

try:
    1/0
except Exception as e:
    print[e]
0

Nếu bạn chỉ muốn có nhật ký mới nhất trong tệp nhật ký của mình, bạn cũng có thể sử dụng đối số

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
6. Bằng cách đó, các bản ghi mới sẽ ghi đè lên các bản ghi hiện có mỗi lần

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
0

Đăng nhập từ nhiều mô-đun

Giả sử bạn đang làm việc trên một dự án

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7 và nhập một mô-đun khác có tên là
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
8. Cả hai tập tin trông giống như thế này

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
1
Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
2

Nếu bạn chạy

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7, bạn sẽ nhận thấy các thông báo được ghi theo cách này

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
3

Tại sao theo thứ tự này? . Phương thức

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
01 bên trong mô-đun trợ giúp được gọi đầu tiên. Thông báo gỡ lỗi được ghi vào bảng điều khiển và sau đó tập lệnh bên trong
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7 được thực thi

Hãy thử một thí nghiệm khác. Bây giờ trong

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7, chúng tôi sẽ thêm đối số tên tệp để ghi nhật ký tin nhắn của chúng tôi vào một tệp thay vì bảng điều khiển.
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
8 vẫn giữ nguyên

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
4

Bây giờ, chúng tôi mong muốn thông báo từ

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
8 được ghi vào bảng điều khiển và thông báo từ
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7 được ghi vào tệp. Nhưng khi bạn chạy tập lệnh, cả hai thông báo đều được ghi vào bảng điều khiển

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
3

Điều này là do, khi bạn nhập mô-đun trợ giúp, phương thức

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
01 được đăng ký. Sau khi phương thức
Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
01 được đăng ký, nó không thể thay đổi được. Bạn có thể xác nhận điều này bằng cách chạy hai phương thức
Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
01 trong tập lệnh python

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
6

Vì vậy, đây là một vấn đề. Chúng tôi không thể đăng nhập tin nhắn từ hai mô-đun khác nhau đến hai nơi khác nhau. Làm thế nào chúng ta có thể giải quyết nó?

Có lẽ bây giờ là thời điểm tốt để nói về

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
4 hay còn gọi là Root logger

Trình ghi gốc

Mô-đun ghi nhật ký Python có một hệ thống phân cấp. Root Logger ở trên cùng của hệ thống phân cấp

Khi bạn đang sử dụng phương pháp

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
01, về cơ bản, bạn đang khởi tạo bộ ghi Gốc. Khi bạn sử dụng thuộc tính ghi nhật ký
Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
12 và nó trả về
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
4, điều đó có nghĩa là bạn đang sử dụng trình ghi nhật ký gốc

Khi bộ ghi gốc được khởi tạo, bạn không thể thêm bất kỳ phương thức ghi nhật ký nào khác vào mô-đun của mình. Như chúng ta có thể thấy từ ví dụ trên, đăng nhập trực tiếp vào Root logger không thực sự là một ý tưởng hay. Thay vào đó, chúng ta nên tạo và định cấu hình các thực thể ghi nhật ký phục vụ các yêu cầu ghi nhật ký cho từng mô-đun cụ thể. Chúng ta có thể làm điều đó bằng cách cấu hình Main Logger

Định cấu hình Trình ghi nhật ký chính

Hãy hiểu cách định cấu hình một bộ ghi riêng biệt nói chung. Chúng tôi có thể định cấu hình trình ghi nhật ký mới bằng cách sử dụng phương pháp

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
14. Phương thức này mong đợi một tên cho trình ghi nhật ký, nếu không, nó sẽ lấy tên của trình ghi nhật ký gốc. Cách tốt nhất là đặt cho nó tên mô-đun bằng cách sử dụng biến
Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
15. Bằng cách này, bộ ghi được định cấu hình sẽ luôn theo dõi tên của mô-đun tạo nhật ký và do đó dễ phân tích hơn sau này

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
7

Khi bạn chạy đoạn mã trên, bạn nhận được kết quả như thế này

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
8

Theo mặc định, logger có mức độ nghiêm trọng là 0. Vì vậy, họ luôn sử dụng cấp độ nhật ký của bộ ghi chính đầu tiên trừ khi cấp đó được đặt riêng cho bộ ghi

Bộ ghi chính cho bộ ghi cấu hình ở trên là Bộ ghi gốc. Vì vậy, thông báo mức gỡ lỗi không được ghi lại

Nhưng tại sao không có thông tin nào khác được hiển thị? . Làm thế nào để làm điều đó?

Với phương thức

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
16, tên cấp độ, tên bộ ghi và thông báo được hiển thị theo mặc định cho người dùng. Tuy nhiên, với việc định cấu hình bộ ghi của riêng bạn, bạn phải đặt các tham số này theo cách thủ công. Bạn làm điều đó thông qua các đối tượng Handler và Formatter

Các đối tượng từ các lớp Trình xử lý chịu trách nhiệm gửi thông báo ghi nhật ký của bạn đến đúng đích. Bạn có thể tìm thấy danh sách các loại trình xử lý khác nhau có sẵn tại đây. Các đối tượng từ các lớp Trình định dạng cấu hình cấu trúc và định dạng của thông điệp tường trình của bạn

Một số tình huống ghi nhật ký

Ghi thông báo vào tệp bằng phương pháp FileHandler

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
9

Bây giờ bạn sẽ thấy đăng nhập ________ 117 như thế này

# printing.py

try:
    1/0
except Exception as e:
    print[e]
0

Ghi nhật ký tin nhắn vào bảng điều khiển bằng phương thức StreamHandler

# printing.py

try:
    1/0
except Exception as e:
    print[e]
1

Bây giờ bạn sẽ thấy thông điệp tường trình của mình được in ra bàn điều khiển

Ưu điểm của việc cấu hình Main Logger

Có một lợi thế rất lớn khi định cấu hình Trình ghi nhật ký chính thay vì sử dụng Trình ghi nhật ký gốc. Hãy để chúng tôi thấy rằng thông qua một ví dụ. Hãy quay lại ví dụ cũ của chúng ta về

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7 và
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
8. Tuy nhiên, lần này, thay vì sử dụng phương pháp
Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
16, chúng tôi sẽ định cấu hình bộ ghi nhật ký chính cho cả hai tệp. Lần này cũng vậy, chúng tôi muốn ghi thông báo từ
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7 vào một tệp và thông báo từ
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
8 vào bảng điều khiển

# printing.py

try:
    1/0
except Exception as e:
    print[e]
2____23

Khi bạn thực thi

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7, chỉ có thông báo nhật ký từ mô-đun trợ giúp được ghi vào bảng điều khiển. Nhật ký từ
# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
7 được ghi vào tệp bạn muốn. tiếng hoan hô

Cũng lưu ý một điều nữa. Nhìn vào tin nhắn được ghi lại từ

# printing.py

import traceback

try:
    1/0
except:
    traceback.print_exc[]
8

# printing.py

try:
    1/0
except Exception as e:
    print[e]
4

Thuộc tính

Traceback [most recent call last]:
  File printing.py, line 1, in 
    print[1/0]
ZeroDivisionError: division by zero
12 trả về tên tệp thực mà từ đó thông báo được ghi lại. Đó không phải là điều tuyệt vời sao?

Tôi hy vọng bạn thích blog này về mô-đun Ghi nhật ký Python. Nó cần một đường cong học tập để làm quen với các tiêu chuẩn và chức năng. Nhưng một khi bạn hiểu khái niệm, đây sẽ là một trong những thư viện hữu ích nhất mà bạn biết

Làm cách nào để ghi nhật ký đầu ra của bàn điều khiển bằng Python?

Để in các chuỗi lên bảng điều khiển hoặc lặp lại một số dữ liệu tới đầu ra của bảng điều khiển, hãy sử dụng hàm print[] có sẵn của Python . hàm print[] có thể lấy các loại giá trị khác nhau làm [các] đối số, như chuỗi, số nguyên, dấu phẩy, v.v. , hoặc đối tượng của một loại lớp.

Trình ghi nhật ký Python xuất ra ở đâu?

Trình xử lý nhật ký . Trong đoạn mã trên, có hai trình xử lý được tạo. Một FileHandler được tạo bằng cách ghi nhật ký. basicConfig[] cho bộ ghi gốc và StreamHandler được tạo cho bộ ghi gốc. With StreamHandler , the logger will output to the terminal, while with FileHandler , the logger will output to a particular file. In the code above, there are two handlers created: A FileHandler created by logging. basicConfig[] for the root logger and a StreamHandler created for the parent logger.

Làm cách nào để lưu đầu ra dấu nhắc lệnh vào tệp văn bản trong Python?

Để lưu đầu ra lệnh vào tệp văn bản bằng Dấu nhắc Lệnh, hãy làm theo các bước sau. .
Mở bắt đầu
Tìm kiếm Dấu nhắc Lệnh
Bấm chuột phải vào kết quả trên cùng và chọn tùy chọn Chạy với tư cách quản trị viên
Nhập lệnh sau để lưu đầu ra vào tệp văn bản và nhấn Enter. LỆNH CỦA BẠN > C. \PATH\TO\FOLDER\OUTPUT. txt

Chủ Đề