Hướng dẫn how to open log file in python - cách mở tệp nhật ký trong python

Tôi đang cố gắng mở một tệp mở rộng .log trong Python nhưng tôi tiếp tục gặp phải một ioerror. Tôi tự hỏi nếu điều này có liên quan đến phần mở rộng bởi vì rõ ràng, cách duy nhất để vào vòng lặp đó là nếu 'một số.log' tồn tại trong thư mục.

location = '/Users/username/Downloads'

for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open('some.log', "r")
       print (f.read())

Traceback:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'

Đã hỏi ngày 20 tháng 11 năm 2015 lúc 17:03Nov 20, 2015 at 17:03

Hướng dẫn how to open log file in python - cách mở tệp nhật ký trong python

robinhood91robinhood91robinhood91

1.5713 huy hiệu vàng19 Huy hiệu bạc35 Huy hiệu đồng3 gold badges19 silver badges35 bronze badges

2

Khi cố gắng mở một tệp trong một thư mục khác, bạn cần cung cấp đường dẫn tệp tuyệt đối. Nếu không, nó cố gắng mở một tệp trong thư mục hiện tại.

Bạn có thể sử dụng

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
9 để kết hợp
import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
0 và
import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
1

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())

Đã trả lời ngày 20 tháng 11 năm 2015 lúc 17:06Nov 20, 2015 at 17:06

Hướng dẫn how to open log file in python - cách mở tệp nhật ký trong python

WondercricketwondercricketWondercricket

7.4432 Huy hiệu vàng38 Huy hiệu bạc55 Huy hiệu Đồng2 gold badges38 silver badges55 bronze badges

Hướng dẫn how to open log file in python - cách mở tệp nhật ký trong python
Đăng nhập tin nhắn vào một tệp trong Python. Thiết kế hình ảnh bởi & NBSP; Elias Ervast

Có một mô-đun tích hợp có tên

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
2 để tạo tệp nhật ký trong Python.

Để đăng nhập một thông báo vào một tệp văn bản riêng biệt bằng cách định cấu hình bộ ghi nhật ký root mô -đun ____22 và đăng nhập thông báo gỡ lỗi:

import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")

Do đó, bạn thấy một tệp có tên

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
4 trong cùng một thư mục với chương trình của bạn. Tệp này sẽ có một thông báo trông như thế này:

DEBUG:root:Debug logging test...

Trong Python, bạn có thể đăng nhập thông tin về các vấn đề trong một tệp riêng biệt. Tệp này sau này có thể giúp bạn chẩn đoán các vấn đề. Nó để lại một dấu vết của vụn bánh mì dẫn đến nguồn gốc của vấn đề.

Trong hướng dẫn toàn diện này, bạn tìm hiểu cách làm việc với mô -đun

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
2 và cách thiết lập logger.

Đăng nhập Python - một tour du lịch chi tiết

Hãy cùng thực hiện một chuyến tham quan chi tiết hơn về đăng nhập và đăng nhập các tệp trong Python.

Ghi nhật ký có nghĩa là theo dõi các sự kiện và trạng thái ứng dụng của bạn khi nó chạy. Đó là một phương pháp quan trọng để phát triển, gỡ lỗi và chạy phần mềm.

Nếu bạn không theo dõi bất kỳ nhật ký nào của chương trình, rất có thể bạn không thể chẩn đoán các vấn đề đúng cách. Điều này là do không đăng nhập, không có dấu vết nào dẫn đến nguyên nhân gốc có thể của một vấn đề.

Với việc đăng nhập thích hợp được thiết lập, bạn có thể theo dấu vết của bánh mì đến nguồn gốc của một vấn đề.

Tại sao không in

Mặc dù in là một chiến lược tuyệt vời để gỡ lỗi mã, nhưng nó có thể không phải lúc nào cũng là lựa chọn tốt nhất. Điều này đặc biệt đúng khi chương trình phức tạp hơn.

Vấn đề với in là các bản in không được lưu trữ ở bất cứ đâu. Nếu ứng dụng của bạn có lỗi, không có dấu vết của lỗi đó, trừ khi thông báo lỗi được ghi lại ở đâu đó.

Vì vậy, bạn có thể muốn đăng nhập dữ liệu của chương trình trong một tệp nhật ký riêng.

Trong Python, có một thư viện tích hợp có tên

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
2 cho mục đích này.

Cách bắt đầu ghi nhật ký tin nhắn trong Python

Để bắt đầu đăng nhập tin nhắn vào một tệp, bạn cần biết cách thiết lập logger.

Để làm điều này, bạn cần

  1. Nhập mô -đun
    import os
    
    location = '/Users/username/Downloads'
    for filename in os.listdir(location):
        if filename == 'some.log':
           f  = open(os.path.join(location, 'some.log'), "r")
           print (f.read())
    
    2
  2. Định cấu hình logger bằng phương thức
    import os
    
    location = '/Users/username/Downloads'
    for filename in os.listdir(location):
        if filename == 'some.log':
           f  = open(os.path.join(location, 'some.log'), "r")
           print (f.read())
    
    8. Phần còn lại của các bước mô tả làm thế nào.
  3. Chỉ định tệp mà tin nhắn nhật ký được gửi.
  4. Xác định mức độ nghiêm trọng của người Viking của các tin nhắn nhật ký.
  5. Định dạng các thông báo nhật ký.
  6. Nối hoặc ghi đè các tin nhắn nhật ký trước đó trong tệp.

Hãy để bắt đầu xây dựng một logger trong khi trải qua sáu bước này một cách chi tiết.

1. Nhập mô-đun đăng nhập tích hợp Python,

Để sử dụng chức năng ghi nhật ký tích hợp Python, hãy bắt đầu bằng cách nhập mô-đun ghi nhật ký.

import logging

2. Gọi BasicConfig () để bắt đầu định cấu hình logger.

Để bắt đầu đăng nhập tin nhắn vào một tệp trong Python, bạn cần định cấu hình mô -đun

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
2.

Để định cấu hình mô -đun ghi nhật ký, hãy gọi

import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
0:

import logging

logging.basicConfig()

Một cuộc gọi

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
8 trống không có gì hữu ích. Trong các bước sau, bạn sẽ thêm các tham số vào cuộc gọi này để thực sự định cấu hình logger.

3. Đăng nhập tệp đích trong Python

Phương thức

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
8 chấp nhận một tham số gọi là
import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
1. Đây là một chuỗi chỉ định tệp đích cho thông báo nhật ký.

Ví dụ: hãy để bắt đầu đăng nhập các tin nhắn vào một tệp được gọi là

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
4.

import logging

logging.basicConfig(filename="log.txt")

Bây giờ logger biết tệp đích và có thể bắt đầu ghi nhật ký tin nhắn vào đó.

Nhưng trước khi chúng tôi đăng nhập tin nhắn đầu tiên của mình, chúng tôi cần chỉ định mức độ nghiêm trọng của các tin nhắn mà chúng tôi muốn theo dõi.

Hãy cùng xem các cấp độ tin nhắn nhật ký trong Python.

4. Các cấp tin nhắn đăng nhập

Có năm cấp độ chính của tin nhắn gỡ lỗi khi đăng nhập. Những cấp độ này mô tả sự nghiêm trọng của người Viking về vấn đề này.

Các cấp độ tin nhắn là:

  1. import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    5. Được sử dụng để cung cấp thông tin chi tiết. Mức này chủ yếu được sử dụng để chẩn đoán các vấn đề trong mã.
    Used to give detailed information. This level is mostly used for diagnosing issues in code.
  2. import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    6. Xác nhận chương trình hoạt động như mong đợi.
    Confirms the program works as expected.
  3. import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    7. Một dấu hiệu cho thấy một sự kiện bất ngờ xảy ra hoặc có thể xảy ra.
    An indication that an unexpected event occured or may occur.
  4. import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    8. Vấn đề nghiêm trọng. Chỉ ra rằng một chương trình không thể thực hiện một số hành động do lỗi.
    Serious issue. Indicates that a program was unable to perform some action due to an error.
  5. import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    9. Một lỗi nghiêm trọng. Chỉ ra rằng chương trình có thể không thể tiếp tục chạy.
    . A serious error. Indicates that the program may be unable to continue running.

Các cấp độ khai thác là số nguyên đằng sau hậu trường. Đây là một cái bàn

Mức độGiá trị số
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
9
50
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
8
40
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
7
30
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
6
20
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
5
10
Mức ghi nhật ký theo mô -đun ghi nhật ký.

Khi bạn chỉ định mức ghi nhật ký, chương trình đã ghi các tin nhắn từ mức đó trở lên.

Ví dụ: nếu bạn sử dụng

DEBUG:root:Debug logging test...
5, chỉ các tin nhắn của cấp độ
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
7,
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
8,
import logging

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
logging.debug("Debug logging test...")
9 mới được ghi lại.

Để đăng nhập một thông báo ở một cấp độ cụ thể, hãy sử dụng các phương thức ghi nhật ký tích hợp tương ứng với các mức được chỉ định ở trên.

Dưới đây là các phương pháp ghi nhật ký:

  • DEBUG:root:Debug logging test...
    9. Đăng nhập một tin nhắn ở cấp độ
    import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    5.
  • import logging
    1. Đăng nhập một tin nhắn ở cấp độ
    import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    6.
  • import logging
    3. Đăng nhập một tin nhắn ở cấp độ
    import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    7.
  • import logging
    5. Đăng nhập một tin nhắn ở cấp độ
    import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    8.
  • import logging
    7. Đăng nhập một tin nhắn ở cấp độ
    import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    9.

Hãy để quay trở lại để định cấu hình logger của chúng tôi. Hãy để chỉ định mức tin nhắn là gỡ lỗi để ghi lại tất cả các tin nhắn có thể vào tệp:

________số 8

Bây giờ bạn có thể đăng nhập tin nhắn đầu tiên của mình vào tệp

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
4. Để thực hiện việc này, hãy thêm dòng sau sau cuộc gọi
import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
8:

logging.debug("Debug logging test...")

Sau đó, chạy chương trình và thấy rằng một tệp mới có tên

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
4 xuất hiện trong thư mục dự án của bạn. Mở tệp và bạn sẽ thấy thông báo này trong tệp:

DEBUG:root:Debug logging test...

Và bạn có nó rồi đấy! Bây giờ mức độ tin nhắn nhật ký của bạn đã được đặt gỡ lỗi, bạn có thể sử dụng tất cả các phương thức ghi nhật ký khác để đăng nhập nhiều lỗi nghiêm trọng hơn. Đây là cách toàn bộ chương trình có thể trông như bây giờ:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
1

Chạy đoạn mã này ghi lại tất cả các cấp tin nhắn khác nhau vào tệp log.txt, trông như thế này:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
2

5. Cách định dạng thông báo nhật ký

Bây giờ tất cả các tin nhắn được định dạng theo cách này:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
3

Here:

  • Yếu tố đầu tiên là cấp độ tin nhắn. Ví dụ
    import logging
    
    logging.basicConfig(filename="log.txt", level=logging.DEBUG)
    logging.debug("Debug logging test...")
    5.
  • Phần tử thứ hai là đối tượng logger. Trong hướng dẫn này, chúng tôi sử dụng logger gốc, vì vậy nó hiển thị
    import logging
    
    logging.basicConfig()
    3.
  • Mục thứ ba là tin nhắn đã đăng nhập.

Nhưng định dạng có thể bao gồm một cái gì đó nhiều thông tin hơn, chẳng hạn như thời gian và thông điệp.

Để loại bỏ định dạng mặc định, bạn có thể tùy chỉnh định dạng bằng cách chỉ định khóa

import logging

logging.basicConfig()
4 trong cuộc gọi
import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
8.

Ví dụ: hãy để định dạng các tin nhắn đã ghi lại sao cho chỉ thời gian và thông báo được hiển thị. Hãy để sửa đổi cuộc gọi

import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
8:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
4

Bây giờ bạn có thể chạy toàn bộ chương trình một lần nữa:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
5

Bây giờ đầu ra được định dạng với dấu thời gian giống như chúng tôi muốn:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
6

(Số nguyên

import logging

logging.basicConfig()
7 là số mili giây mà hoạt động này đã thực hiện.)

Lưu ý rằng đây không phải là thông tin duy nhất bạn có thể đưa vào tin nhắn đã đăng nhập. Dưới đây là danh sách đầy đủ tất cả các thông tin bạn có thể hiển thị về tin nhắn.

6. Nối hoặc ghi đè tệp nhật ký trong Python

Hãy thử chạy chương trình ghi nhật ký ví dụ nhiều lần. Nếu bạn mở tệp, bạn có thể thấy các lỗi được thêm vào tệp. Các bản ghi từ các lần chạy trước vẫn còn đó.

Điều này là do, theo mặc định, logger được cấu hình để nối các tin nhắn vào tệp nhật ký.

Bạn cũng có thể thay đổi điều này bằng cách chỉ định

import logging

logging.basicConfig()
8 trong cuộc gọi
import os

location = '/Users/username/Downloads'
for filename in os.listdir(location):
    if filename == 'some.log':
       f  = open(os.path.join(location, 'some.log'), "r")
       print (f.read())
8.

Nếu bạn muốn ghi đè lên các nhật ký thay vì nối thêm chúng, hãy chỉ định

import logging

logging.basicConfig()
8 là W W W:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
7

Nếu bây giờ bạn chạy chương trình, nhật ký mới ghi đè lên những cái trước.

Một lần cuối cùng ở đây là chương trình đầy đủ:

f  = open('some.log', "r")
IOError: [Errno 2] No such file or directory: 'some.log'
8

Sự kết luận

Hôm nay bạn đã học cách tạo một tệp nhật ký trong Python và cách đăng nhập các tin nhắn ở các cấp độ khác nhau vào nó.

Một tệp nhật ký có thể hữu ích để theo dõi các lỗi và sự cố trong mã của bạn. Một tệp nhật ký được cấu hình đúng hướng dẫn đến nguồn lỗi khá dễ dàng.

Cảm ơn vì đã đọc. Tôi hy vọng bạn thấy nó hữu dụng.

Mã hóa hạnh phúc!

Đọc thêm

Câu hỏi và câu trả lời phỏng vấn Python

Các tính năng nâng cao hữu ích của Python

Tệp nhật ký trong Python là gì?

Python có ghi nhật ký mô-đun tích hợp cho phép viết các thông báo trạng thái vào tệp hoặc bất kỳ luồng đầu ra nào khác.Tệp có thể chứa thông tin về phần của mã được thực thi và vấn đề nào đã được phát sinh.allows writing status messages to a file or any other output streams. The file can contain the information on which part of the code is executed and what problems have been arisen.

Làm cách nào để xem tệp nhật ký của mình?

Bởi vì hầu hết các tệp nhật ký được ghi lại bằng văn bản thuần túy, việc sử dụng bất kỳ trình soạn thảo văn bản nào sẽ làm tốt để mở nó.Theo mặc định, Windows sẽ sử dụng Notepad để mở tệp nhật ký khi bạn nhấp đúp vào nó.Bạn gần như chắc chắn đã có một ứng dụng đã được tích hợp hoặc cài đặt trên hệ thống của mình để mở các tệp nhật ký.the use of any text editor will do just fine to open it. By default, Windows will use Notepad to open a LOG file when you double-click on it. You almost certainly have an app already built-in or installed on your system for opening LOG files.