Hướng dẫn python save print to log file - python lưu bản in vào tệp nhật ký

Được chứ. Tôi đã hoàn thành chương trình Python đầu tiên của mình. Nó có khoảng 1000 dòng mã. Trong quá trình phát triển, tôi đã đặt rất nhiều câu lệnh

import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
1 trước khi chạy một lệnh bằng cách sử dụng
import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
2 nói điều gì đó như,

print "running command",cmd
os.system(cmd)

Bây giờ tôi đã hoàn thành chương trình. Tôi nghĩ về việc bình luận chúng nhưng chuyển hướng tất cả các bản in không cần thiết này (tôi không thể xóa tất cả các câu lệnh

import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
1 - vì một số cung cấp thông tin hữu ích cho người dùng) vào tệp nhật ký sẽ hữu ích hơn? Bất kỳ thủ thuật hoặc mẹo.

Hướng dẫn python save print to log file - python lưu bản in vào tệp nhật ký

Silentghost

295K64 Huy hiệu vàng302 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges302 silver badges291 bronze badges

hỏi ngày 25 tháng 3 năm 2010 lúc 6:25Mar 25, 2010 at 6:25

Hướng dẫn python save print to log file - python lưu bản in vào tệp nhật ký

webminal.orgwebminal.orgwebminal.org

42.9K37 Huy hiệu vàng91 Huy hiệu bạc125 Huy hiệu Đồng37 gold badges91 silver badges125 bronze badges

3

Python cho phép bạn nắm bắt và gán sys.stdout - như đã đề cập - để làm điều này:

import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()

Hướng dẫn python save print to log file - python lưu bản in vào tệp nhật ký

Đã trả lời ngày 25 tháng 3 năm 2010 lúc 6:35Mar 25, 2010 at 6:35

6

Bạn nên xem mô -đun đăng nhập Python


Chỉnh sửa: Mã mẫu:

import logging

if __name__ == "__main__":
    logging.basicConfig(level=logging.DEBUG, filename="logfile", filemode="a+",
                        format="%(asctime)-15s %(levelname)-8s %(message)s")
    logging.info("hello")

Tạo một tệp có tên "LogFile" với Nội dung:

2012-10-18 06:40:03,582 INFO     hello

Đã trả lời ngày 25 tháng 3 năm 2010 lúc 6:27Mar 25, 2010 at 6:27

5

  • Lần tới, bạn sẽ hạnh phúc hơn nếu thay vì sử dụng các câu lệnh

    import sys
    old_stdout = sys.stdout
    
    log_file = open("message.log","w")
    
    sys.stdout = log_file
    
    print "this will be written to message.log"
    
    sys.stdout = old_stdout
    
    log_file.close()
    
    1 tại tất cả các bạn sử dụng mô -đun
    import sys
    old_stdout = sys.stdout
    
    log_file = open("message.log","w")
    
    sys.stdout = log_file
    
    print "this will be written to message.log"
    
    sys.stdout = old_stdout
    
    log_file.close()
    
    5 từ đầu. Nó cung cấp kiểm soát bạn muốn và bạn có thể viết nó vào stdout trong khi đó vẫn là nơi bạn muốn.

  • Nhiều người ở đây đã đề nghị chuyển hướng stdout. Đây là một giải pháp xấu xí. Nó làm thay đổi một toàn cầu và điều gì tồi tệ hơn, nó làm thay đổi nó cho việc sử dụng mô -đun này. Tôi sẽ sớm tạo ra một regex thay đổi tất cả

    import sys
    old_stdout = sys.stdout
    
    log_file = open("message.log","w")
    
    sys.stdout = log_file
    
    print "this will be written to message.log"
    
    sys.stdout = old_stdout
    
    log_file.close()
    
    6 thành
    import sys
    old_stdout = sys.stdout
    
    log_file = open("message.log","w")
    
    sys.stdout = log_file
    
    print "this will be written to message.log"
    
    sys.stdout = old_stdout
    
    log_file.close()
    
    7 và đặt
    import sys
    old_stdout = sys.stdout
    
    log_file = open("message.log","w")
    
    sys.stdout = log_file
    
    print "this will be written to message.log"
    
    sys.stdout = old_stdout
    
    log_file.close()
    
    8 thành stdout hoặc một tệp thực tế mà tôi chọn.

    • Nếu bạn có bất kỳ phần nào khác của ứng dụng thực sự phụ thuộc vào việc viết vào stdout (hoặc bao giờ trong tương lai nhưng bạn chưa biết điều đó), điều này sẽ phá vỡ chúng. Ngay cả khi bạn không, nó làm cho việc đọc mô -đun của bạn trông giống như nó làm một việc khi nó thực sự làm một điều khác nếu bạn bỏ lỡ một dòng nhỏ lên trên.
    • In print khá xấu xí, nhưng gần như không xấu xí như tạm thời thay đổi
      import sys
      old_stdout = sys.stdout
      
      log_file = open("message.log","w")
      
      sys.stdout = log_file
      
      print "this will be written to message.log"
      
      sys.stdout = old_stdout
      
      log_file.close()
      
      9 cho quy trình.
    • Nói rất kỹ thuật, một sự thay thế regex không có khả năng làm điều này đúng (ví dụ, nó có thể làm cho dương tính sai nếu bạn ở trong một chuỗi đa dòng theo nghĩa đen). Tuy nhiên, nó có khả năng làm việc, chỉ cần để mắt đến nó.
  • import logging
    
    if __name__ == "__main__":
        logging.basicConfig(level=logging.DEBUG, filename="logfile", filemode="a+",
                            format="%(asctime)-15s %(levelname)-8s %(message)s")
        logging.info("hello")
    
    0 Hầu như luôn luôn kém hơn so với sử dụng mô -đun
    import logging
    
    if __name__ == "__main__":
        logging.basicConfig(level=logging.DEBUG, filename="logfile", filemode="a+",
                            format="%(asctime)-15s %(levelname)-8s %(message)s")
        logging.info("hello")
    
    1. Cái sau không cần phải gọi vỏ, không truyền tín hiệu theo cách thường không mong muốn và có thể được sử dụng theo cách không chặn.

Đã trả lời ngày 25 tháng 3 năm 2010 lúc 14:49Mar 25, 2010 at 14:49

Hướng dẫn python save print to log file - python lưu bản in vào tệp nhật ký

Mike Grahammike GrahamMike Graham

71.3K14 Huy hiệu vàng98 Huy hiệu bạc129 Huy hiệu đồng14 gold badges98 silver badges129 bronze badges

Bạn có thể tạo một tệp nhật ký và chuẩn bị nó để viết. Sau đó tạo một chức năng:

def write_log(*args):
    line = ' '.join([str(a) for a in args])
    log_file.write(line+'\n')
    print(line)

và sau đó thay thế tên hàm in () của bạn bằng write_log ()

Đã trả lời ngày 1 tháng 12 năm 2017 lúc 14:08Dec 1, 2017 at 14:08

AiszukaiszukAisZuk

611 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

Bạn có thể chuyển hướng thay thế sys.stdout bằng bất kỳ đối tượng nào có cùng giao diện với sys.stdout, trong đối tượng đó, bạn có thể in vào thiết bị đầu cuối và cũng để nộp. ví dụ. Xem công thức này http://code.activestate.com/recipes/119404-print-hook/

Đã trả lời ngày 25 tháng 3 năm 2010 lúc 6:56Mar 25, 2010 at 6:56

Anurag uniyalanurag uniyalAnurag Uniyal

83.6K39 Huy hiệu vàng170 Huy hiệu bạc216 Huy hiệu đồng39 gold badges170 silver badges216 bronze badges

5

Có nhiều cách để ghi đầu ra vào tệp '.log'

Ghi nhật ký là một phương tiện để theo dõi các sự kiện xảy ra khi một số tệp chạy. Cũng chỉ ra rằng một số sự kiện đã xảy ra.

import logging
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG)
logging.debug('This is debug message')
logging.info('This is information message')
logging.warning('This is warning message')
logging.error('This is warning message')

Một phương pháp khác để sử dụng để giảm tất cả những thứ đó là những gì bạn đã in vào bảng điều khiển mà tất cả sẽ được lưu vào tệp '' log ''

python abc.py > abc.log

Bằng cách sử dụng phương thức này, bạn có thể viết mọi thứ vào tệp nhật ký

Đã trả lời ngày 25 tháng 4 năm 2021 lúc 17:59Apr 25, 2021 at 17:59

Hướng dẫn python save print to log file - python lưu bản in vào tệp nhật ký

Đặt tệp giống như tệp của riêng bạn trong

import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
9 sẽ cho phép bạn nắm bắt đầu ra văn bản thông qua
import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
1.

Đã trả lời ngày 25 tháng 3 năm 2010 lúc 6:27Mar 25, 2010 at 6:27

1

Lần tới, bạn sẽ hạnh phúc hơn nếu thay vì sử dụng các câu lệnh

import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
1 tại tất cả các bạn sử dụng mô -đun
import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
5 từ đầu. Nó cung cấp kiểm soát bạn muốn và bạn có thể viết nó vào stdout trong khi đó vẫn là nơi bạn muốn.

Nhiều người ở đây đã đề nghị chuyển hướng stdout. Đây là một giải pháp xấu xí. Nó làm thay đổi một toàn cầu và điều gì tồi tệ hơn, nó làm thay đổi nó cho việc sử dụng mô -đun này. Tôi sẽ sớm tạo ra một regex thay đổi tất cả
import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
6 thành
import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
7 và đặt
import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
8 thành stdout hoặc một tệp thực tế mà tôi chọn.

Nếu bạn có bất kỳ phần nào khác của ứng dụng thực sự phụ thuộc vào việc viết vào stdout (hoặc bao giờ trong tương lai nhưng bạn chưa biết điều đó), điều này sẽ phá vỡ chúng. Ngay cả khi bạn không, nó làm cho việc đọc mô -đun của bạn trông giống như nó làm một việc khi nó thực sự làm một điều khác nếu bạn bỏ lỡ một dòng nhỏ lên trên.Jul 1, 2019 at 0:41

def log(txt):
    f = open(__file__ + '.log', "a")
    f.write(txt + '\r\n')
    f.close()

Usage:

log('Hello World!')

Example:

import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
0

In print khá xấu xí, nhưng gần như không xấu xí như tạm thời thay đổi

import sys
old_stdout = sys.stdout

log_file = open("message.log","w")

sys.stdout = log_file

print "this will be written to message.log"

sys.stdout = old_stdout

log_file.close()
9 cho quy trình.

Nói rất kỹ thuật, một sự thay thế regex không có khả năng làm điều này đúng (ví dụ, nó có thể làm cho dương tính sai nếu bạn ở trong một chuỗi đa dòng theo nghĩa đen). Tuy nhiên, nó có khả năng làm việc, chỉ cần để mắt đến nó.Jan 21 at 19:30

import logging

if __name__ == "__main__":
    logging.basicConfig(level=logging.DEBUG, filename="logfile", filemode="a+",
                        format="%(asctime)-15s %(levelname)-8s %(message)s")
    logging.info("hello")
0 Hầu như luôn luôn kém hơn so với sử dụng mô -đun
import logging

if __name__ == "__main__":
    logging.basicConfig(level=logging.DEBUG, filename="logfile", filemode="a+",
                        format="%(asctime)-15s %(levelname)-8s %(message)s")
    logging.info("hello")
1. Cái sau không cần phải gọi vỏ, không truyền tín hiệu theo cách thường không mong muốn và có thể được sử dụng theo cách không chặn.Jeff Luyet

Đã trả lời ngày 25 tháng 3 năm 2010 lúc 14:492 silver badges10 bronze badges

Làm thế nào để bạn viết một câu lệnh in vào một tệp nhật ký trong Python?

Python - in nhật ký trong một tập tin. Nếu bạn muốn in nhật ký Python vào một tệp thay vì trên bảng điều khiển thì chúng ta có thể làm như vậy bằng cách sử dụng phương thức basicConfig () bằng cách cung cấp tên tệp và fileMode làm tham số. Định dạng của thông báo có thể được chỉ định bằng cách sử dụng tham số định dạng trong phương thức basicConfig ().using the basicConfig() method by providing filename and filemode as parameter. The format of the message can be specified by using format parameter in basicConfig() method.

Làm cách nào để lưu các bản in trong Python?

Chuyển hướng đầu ra in vào một tập tin trong Python..
Sử dụng hàm write () để in đầu ra vào một tệp trong python ..
Sử dụng hàm in () để in đầu ra vào một tệp trong Python ..
Sử dụng sys.stdout để in đầu ra vào một tệp trong Python ..
Sử dụng hàm bối cảnhLib.Redirect_stdout () để in đầu ra vào tệp trong Python ..

Làm cách nào để lưu tệp nhật ký?

Summary..
Chọn Bắt đầu, Nhập Notepad và chọn nó từ kết quả ..
Loại hình .Đăng nhập vào dòng đầu tiên, sau đó nhấn Enter để chuyển sang dòng tiếp theo ..
Trên menu Tệp, nhấp vào Lưu dưới dạng, nhập tên mô tả cho tệp của bạn vào hộp tên tệp, sau đó bấm OK ..

Làm thế nào để bạn ghi lại một bản ghi trong Python?

Định cấu hình ghi nhật ký Tạo trình ghi nhật ký, trình xử lý và định dạng rõ ràng bằng cách sử dụng mã Python gọi các phương thức cấu hình được liệt kê ở trên.Tạo tệp cấu hình ghi nhật ký và đọc nó bằng hàm fileconfig ().Tạo một từ điển thông tin cấu hình và chuyển nó đến hàm DictConfig ().