Sử dụng bộ nhớ ghi nhật ký Python

Các trình xử lý hữu ích sau đây được cung cấp trong gói. Lưu ý rằng ba trong số các trình xử lý [ và ] thực sự được xác định trong chính mô-đun, nhưng đã được ghi lại ở đây cùng với các trình xử lý khác

StreamHandler

Lớp, nằm trong gói lõi, gửi đầu ra ghi nhật ký tới các luồng như sys. thiết bị xuất chuẩn, hệ thống. stderr hoặc bất kỳ đối tượng giống tệp nào [hay chính xác hơn là bất kỳ đối tượng nào hỗ trợ các phương thức write[]flush[]]

lớp ghi nhật ký. StreamHandler[luồng=Không có]

Trả về một thể hiện mới của lớp. Nếu luồng được chỉ định, phiên bản sẽ sử dụng luồng đó để ghi nhật ký đầu ra; . stderr sẽ được sử dụng

phát ra[bản ghi]

Nếu một trình định dạng được chỉ định, nó sẽ được sử dụng để định dạng bản ghi. Bản ghi sau đó được ghi vào luồng theo sau bởi. Nếu có thông tin ngoại lệ, nó sẽ được định dạng bằng cách sử dụng và thêm vào luồng

xả[]

Xóa luồng bằng cách gọi phương thức của nó. Lưu ý rằng phương thức logging.handlers4 được kế thừa từ đó và do đó không có đầu ra, vì vậy đôi khi có thể cần một cuộc gọi rõ ràng

setStream[luồng]

Đặt luồng của phiên bản thành giá trị đã chỉ định, nếu nó khác. Luồng cũ bị xóa trước khi luồng mới được đặt

Thông số

luồng - Luồng mà trình xử lý nên sử dụng

trả lại

luồng cũ, nếu luồng đã bị thay đổi hoặc Không có nếu không

Mới trong phiên bản 3. 7

Kẻ hủy diệt

Chuỗi được sử dụng làm dấu kết thúc khi ghi bản ghi được định dạng vào luồng. Giá trị mặc định là logging.handlers7

Nếu bạn không muốn kết thúc dòng mới, bạn có thể đặt thuộc tính logging.handlers1 của phiên bản trình xử lý thành chuỗi trống

Trong các phiên bản trước, bộ kết thúc được mã hóa cứng thành logging.handlers7

Mới trong phiên bản 3. 2

Trình xử lý tệp

Lớp, nằm trong gói lõi, gửi đầu ra ghi nhật ký tới một tệp đĩa. Nó kế thừa chức năng đầu ra từ

lớp ghi nhật ký. Trình xử lý tệp[tên tệp , chế độ='a', encoding=None, delay=False, errors=None]

Trả về một thể hiện mới của lớp. Tệp được chỉ định được mở và được sử dụng làm luồng để ghi nhật ký. Nếu chế độ không được chỉ định, StreamHandler4 được sử dụng. Nếu mã hóa không phải là StreamHandler5, nó được sử dụng để mở tệp bằng mã hóa đó. Nếu độ trễ là đúng, thì việc mở tệp bị hoãn lại cho đến khi lệnh gọi đầu tiên đến. Theo mặc định, tệp phát triển vô thời hạn. Nếu lỗi được chỉ định, nó được sử dụng để xác định cách xử lý lỗi mã hóa

Đã thay đổi trong phiên bản 3. 6. Cũng như các giá trị chuỗi, các đối tượng cũng được chấp nhận cho đối số tên tệp.

Đã thay đổi trong phiên bản 3. 9. Thông số lỗi đã được thêm vào.

đóng[]

Đóng tệp

phát ra[bản ghi]

Xuất bản ghi ra tệp

Lưu ý rằng nếu tệp bị đóng do tắt nhật ký khi thoát và chế độ tệp là 'w', thì bản ghi sẽ không được phát ra [xem bpo-42378]

NullHandler

Mới trong phiên bản 3. 1

Lớp, nằm trong gói lõi, không thực hiện bất kỳ định dạng hoặc đầu ra nào. Nó thực chất là một trình xử lý 'no-op' để các nhà phát triển thư viện sử dụng

lớp ghi nhật ký. NullHandler

Trả về một thể hiện mới của lớp

phát ra[bản ghi]

Phương pháp này không làm gì cả

xử lý[bản ghi]

Phương pháp này không làm gì cả

createLock[]

Phương thức này trả về StreamHandler5 cho khóa, vì không có I/O cơ bản nào cần truy cập theo thứ tự

Xem để biết thêm thông tin về cách sử dụng

Trình xử lý tệp đã xem

Lớp, nằm trong mô-đun, là một write[]0 xem tệp mà nó đang ghi vào. Nếu tệp thay đổi, tệp sẽ được đóng và mở lại bằng tên tệp

Thay đổi tệp có thể xảy ra do sử dụng các chương trình như newsyslog và logrotate thực hiện xoay tệp nhật ký. Trình xử lý này, dành cho sử dụng trong Unix/Linux, xem tệp để xem nó có thay đổi kể từ lần phát cuối cùng không. [Một tập tin được coi là đã thay đổi nếu thiết bị hoặc inode của nó đã thay đổi. ] Nếu tệp đã thay đổi, luồng tệp cũ bị đóng và tệp được mở để nhận luồng mới

Trình xử lý này không thích hợp để sử dụng trong Windows, bởi vì trong Windows các tệp nhật ký mở không thể được di chuyển hoặc đổi tên - việc ghi nhật ký sẽ mở các tệp bằng các khóa độc quyền - và do đó không cần một trình xử lý như vậy. Hơn nữa, ST_INO không được hỗ trợ trong Windows;

lớp ghi nhật ký. người xử lý. WatchedFileHandler[tên tệp , chế độ='a', encoding=None, delay=False, errors=None]

Trả về một thể hiện mới của lớp. Tệp được chỉ định được mở và được sử dụng làm luồng để ghi nhật ký. Nếu chế độ không được chỉ định, StreamHandler4 được sử dụng. Nếu mã hóa không phải là StreamHandler5, nó được sử dụng để mở tệp bằng mã hóa đó. Nếu độ trễ là đúng, thì việc mở tệp bị hoãn lại cho đến khi lệnh gọi đầu tiên đến. Theo mặc định, tệp phát triển vô thời hạn. Nếu lỗi được cung cấp, nó sẽ xác định cách xử lý lỗi mã hóa

Đã thay đổi trong phiên bản 3. 6. Cũng như các giá trị chuỗi, các đối tượng cũng được chấp nhận cho đối số tên tệp.

Đã thay đổi trong phiên bản 3. 9. Thông số lỗi đã được thêm vào.

reopenIfNeeded[]

Kiểm tra xem tập tin đã thay đổi chưa. Nếu có, luồng hiện tại sẽ bị xóa và đóng và tệp được mở lại, thường là tiền thân để xuất bản ghi vào tệp

Mới trong phiên bản 3. 6

phát ra[bản ghi]

Xuất bản ghi vào tệp, nhưng trước tiên hãy gọi để mở lại tệp nếu nó đã thay đổi

BaseRotatingHandler

Lớp, nằm trong mô-đun, là lớp cơ sở cho các trình xử lý tệp quay vòng và. Bạn không cần khởi tạo lớp này, nhưng nó có các thuộc tính và phương thức mà bạn có thể cần ghi đè

lớp ghi nhật ký. người xử lý. BaseRotatingHandler[tên tệp , chế độ, encoding=None, delay=False, errors=None]

Các thông số như đối với write[]0. các thuộc tính là

người đặt tên

Nếu thuộc tính này được đặt thành có thể gọi được, phương thức sẽ ủy quyền cho thuộc tính có thể gọi này. Các tham số được truyền cho có thể gọi được là các tham số được truyền cho

Ghi chú

Chức năng đặt tên được gọi khá nhiều lần trong quá trình tái đầu tư, do đó, chức năng này phải đơn giản và nhanh nhất có thể. Nó cũng sẽ trả về cùng một đầu ra mỗi lần cho một đầu vào nhất định, nếu không, hành vi tái đầu tư có thể không hoạt động như mong đợi

Cũng cần lưu ý rằng cần cẩn thận khi sử dụng trình đặt tên để bảo toàn các thuộc tính nhất định trong tên tệp được sử dụng trong quá trình xoay. Ví dụ: dự kiến ​​​​sẽ có một tập hợp các tệp nhật ký có tên chứa các số nguyên liên tiếp, để xoay vòng hoạt động như mong đợi và xóa các tệp nhật ký cũ [dựa trên tham số write[]42 được truyền cho trình khởi tạo của trình xử lý] bằng cách xác định các tệp cũ nhất cần xóa. Để điều này xảy ra, tên tệp phải được sắp xếp theo phần ngày/giờ của tên tệp và người đặt tên cần tôn trọng điều này. [Nếu muốn một người đặt tên không tôn trọng sơ đồ này, thì nó sẽ cần được sử dụng trong một lớp con ghi đè phương thức để phù hợp với sơ đồ đặt tên tùy chỉnh. ]

Mới trong phiên bản 3. 3

máy quay

Nếu thuộc tính này được đặt thành có thể gọi được, phương thức sẽ ủy quyền cho thuộc tính có thể gọi này. Các tham số được truyền cho có thể gọi được là các tham số được truyền cho

Mới trong phiên bản 3. 3

tên_tệp xoay[tên_tệp_xoay]

Sửa đổi tên tệp của tệp nhật ký khi xoay

Điều này được cung cấp để có thể cung cấp tên tệp tùy chỉnh

Việc triển khai mặc định gọi thuộc tính 'namer' của trình xử lý, nếu nó có thể gọi được, hãy chuyển tên mặc định cho nó. Nếu thuộc tính không thể gọi được [mặc định là StreamHandler5], tên được trả về không thay đổi

Thông số

default_name – Tên mặc định cho tệp nhật ký

Mới trong phiên bản 3. 3

xoay[nguồn , điểm đến]

Khi xoay, xoay log hiện tại

Việc triển khai mặc định gọi thuộc tính 'rotator' của trình xử lý, nếu nó có thể gọi được, chuyển các đối số nguồn và đích cho nó. Nếu thuộc tính không thể gọi được [mặc định là StreamHandler5], nguồn được đổi tên đơn giản thành đích

Thông số
  • nguồn – Tên tệp nguồn. Đây thường là tên tệp cơ sở, e. g. 'kiểm tra. nhật ký'

  • dest – Tên tập tin đích. Đây thường là những gì nguồn được xoay, e. g. 'kiểm tra. đăng nhập. 1’

Mới trong phiên bản 3. 3

Lý do các thuộc tính tồn tại là để giúp bạn tiết kiệm phải phân lớp - bạn có thể sử dụng các lệnh gọi tương tự cho các trường hợp của và. Nếu trình gọi tên hoặc công cụ quay vòng có thể gọi được đưa ra một ngoại lệ, điều này sẽ được xử lý giống như bất kỳ ngoại lệ nào khác trong cuộc gọi StreamHandler6, tôi. e. thông qua phương thức StreamHandler2 của trình xử lý

Nếu bạn cần thực hiện nhiều thay đổi quan trọng hơn đối với quá trình xoay vòng, bạn có thể ghi đè các phương thức

Ví dụ, xem

Xoay FileHandler

Lớp, nằm trong mô-đun, hỗ trợ xoay các tệp nhật ký đĩa

lớp ghi nhật ký. người xử lý. RotatingFileHandler[tên tệp , chế độ='a', maxBytes=0, backupCount=0, encoding=None, delay=False, errors=None]

Trả về một thể hiện mới của lớp. Tệp được chỉ định được mở và được sử dụng làm luồng để ghi nhật ký. Nếu chế độ không được chỉ định, StreamHandler4 được sử dụng. Nếu mã hóa không phải là StreamHandler5, nó được sử dụng để mở tệp bằng mã hóa đó. Nếu độ trễ là đúng, thì việc mở tệp bị hoãn lại cho đến khi lệnh gọi đầu tiên đến. Theo mặc định, tệp phát triển vô thời hạn. Nếu lỗi được cung cấp, nó sẽ xác định cách xử lý lỗi mã hóa

Bạn có thể sử dụng các giá trị maxBytes và backupCount để cho phép tệp cuộn qua ở kích thước định trước. Khi sắp vượt quá kích thước, tệp sẽ bị đóng và một tệp mới sẽ được mở âm thầm để xuất ra. Rollover xảy ra bất cứ khi nào tệp nhật ký hiện tại có độ dài gần maxBytes; . Khi backupCount khác không, hệ thống sẽ lưu các tệp nhật ký cũ bằng cách nối thêm các phần mở rộng ‘. 1', '. 2’ v.v. , đến tên tệp. Ví dụ: với backupCount là 5 và tên tệp cơ sở là StreamHandler9, bạn sẽ nhận được StreamHandler9, write[]41, write[]42, tối đa là write[]43. Tệp được ghi vào luôn là StreamHandler9. Khi tệp này được lấp đầy, nó sẽ bị đóng và đổi tên thành write[]41, và nếu tệp write[]41, write[]42, v.v. tồn tại, sau đó chúng được đổi tên thành write[]42, write[]49, v.v. tương ứng

Đã thay đổi trong phiên bản 3. 6. Cũng như các giá trị chuỗi, các đối tượng cũng được chấp nhận cho đối số tên tệp.

Đã thay đổi trong phiên bản 3. 9. Thông số lỗi đã được thêm vào.

doRollover[]

Rollover, như mô tả ở trên

phát ra[bản ghi]

Xuất bản ghi vào tệp, phục vụ cho di chuột qua như được mô tả trước đây

TimedRotatingFileHandler

Lớp, nằm trong mô-đun, hỗ trợ xoay các tệp nhật ký đĩa theo các khoảng thời gian nhất định

lớp ghi nhật ký. người xử lý. TimedRotatingFileHandler[tên tệp , khi nào='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None, errors=None]

Trả về một thể hiện mới của lớp. Tệp được chỉ định được mở và được sử dụng làm luồng để ghi nhật ký. Khi xoay nó cũng đặt hậu tố tên tệp. Xoay vòng xảy ra dựa trên sản phẩm của thời điểm và khoảng thời gian

Bạn có thể sử dụng thời điểm để chỉ định loại khoảng thời gian. Danh sách các giá trị có thể ở bên dưới. Lưu ý rằng chúng không phân biệt chữ hoa chữ thường

Giá trị

Loại khoảng thời gian

Nếu/như thế nào atTime được sử dụng

write[]4

giây

Làm ngơ

write[]5

Phút

Làm ngơ

write[]6

Giờ

Làm ngơ

write[]7

ngày

Làm ngơ

write[]8

Ngày trong tuần [0=thứ hai]

Được sử dụng để tính toán thời gian tái đầu tư ban đầu

write[]9

Chuyển qua lúc nửa đêm, nếu atTime không được chỉ định, nếu không thì tại thời điểm atTime

Được sử dụng để tính toán thời gian tái đầu tư ban đầu

Khi sử dụng xoay vòng theo ngày trong tuần, hãy chỉ định 'W0' cho Thứ Hai, 'W1' cho Thứ Ba, v.v. cho đến 'W6' cho Chủ nhật. Trong trường hợp này, giá trị được truyền cho khoảng thời gian không được sử dụng

Hệ thống sẽ lưu các tệp nhật ký cũ bằng cách thêm phần mở rộng vào tên tệp. Các tiện ích mở rộng dựa trên ngày và giờ, sử dụng định dạng strftime flush[]0 hoặc phần đầu của nó, tùy thuộc vào khoảng thời gian tái đầu tư

Khi tính toán thời gian tái đầu tư tiếp theo lần đầu tiên [khi trình xử lý được tạo], thời gian sửa đổi cuối cùng của tệp nhật ký hiện có hoặc thời gian hiện tại sẽ được sử dụng để tính toán khi nào sẽ xảy ra lần luân chuyển tiếp theo

Nếu đối số utc là đúng, thời gian trong UTC sẽ được sử dụng;

Nếu backupCount khác 0, thì tối đa các tệp backupCount sẽ được giữ lại và nếu nhiều tệp khác được tạo khi di chuột qua, thì tệp cũ nhất sẽ bị xóa. Logic xóa sử dụng khoảng thời gian để xác định tệp nào cần xóa, vì vậy việc thay đổi khoảng thời gian có thể khiến các tệp cũ nằm lung tung

Nếu độ trễ là đúng, thì việc mở tệp bị hoãn lại cho đến khi lệnh gọi đầu tiên đến

Nếu atTime không phải là StreamHandler5, thì đó phải là phiên bản flush[]3 chỉ định thời gian trong ngày khi quá trình chuyển đổi xảy ra, đối với các trường hợp quá trình chuyển đổi được đặt diễn ra “lúc nửa đêm” hoặc “vào một ngày cụ thể trong tuần”. Lưu ý rằng trong những trường hợp này, giá trị atTime được sử dụng một cách hiệu quả để tính toán lần tái đầu tư ban đầu và các lần tái đầu tư tiếp theo sẽ được tính toán thông qua phép tính khoảng thời gian thông thường

Nếu lỗi được chỉ định, nó được sử dụng để xác định cách xử lý lỗi mã hóa

Ghi chú

Việc tính toán thời gian tái đầu tư ban đầu được thực hiện khi trình xử lý được khởi tạo. Tính toán thời gian tái đầu tư tiếp theo chỉ được thực hiện khi tái đầu tư xảy ra và tái đầu tư chỉ xảy ra khi phát ra đầu ra. Nếu điều này không được ghi nhớ, nó có thể dẫn đến một số nhầm lẫn. Ví dụ: nếu khoảng thời gian "mỗi phút" được đặt, điều đó không có nghĩa là bạn sẽ luôn thấy các tệp nhật ký có thời gian [trong tên tệp] cách nhau một phút; . Mặt khác, nếu các thông báo ghi nhật ký chỉ được xuất năm phút một lần [giả sử], thì sẽ có khoảng trống trong thời gian tệp tương ứng với số phút không có đầu ra [và do đó không xảy ra chuyển đổi]

Đã thay đổi trong phiên bản 3. 4. tham số atTime đã được thêm vào.

Đã thay đổi trong phiên bản 3. 6. Cũng như các giá trị chuỗi, các đối tượng cũng được chấp nhận cho đối số tên tệp.

Đã thay đổi trong phiên bản 3. 9. Thông số lỗi đã được thêm vào.

doRollover[]

Rollover, như mô tả ở trên

phát ra[bản ghi]

Xuất bản ghi vào tệp, phục vụ cho việc tái đầu tư như mô tả ở trên

getFilesToDelete[]

Trả về danh sách tên tệp sẽ bị xóa như một phần của rollover. Đây là những đường dẫn tuyệt đối của các tệp nhật ký sao lưu cũ nhất được ghi bởi trình xử lý

Trình xử lý ổ cắm

Lớp, nằm trong mô-đun, gửi đầu ra ghi nhật ký tới ổ cắm mạng. Lớp cơ sở sử dụng ổ cắm TCP

lớp ghi nhật ký. người xử lý. SocketHandler[máy chủ , cổng]

Trả về một phiên bản mới của lớp dự định giao tiếp với một máy từ xa có địa chỉ được cung cấp bởi máy chủ và cổng

Đã thay đổi trong phiên bản 3. 4. Nếu flush[]8 được chỉ định là StreamHandler5, ổ cắm tên miền Unix được tạo bằng cách sử dụng giá trị trong logging.handlers00 - nếu không, ổ cắm TCP được tạo.

đóng[]

Đóng ổ cắm

phát ra[]

Chọn từ điển thuộc tính của bản ghi và ghi nó vào ổ cắm ở định dạng nhị phân. Nếu có lỗi với ổ cắm, hãy bỏ gói âm thầm. Nếu kết nối trước đó bị mất, hãy thiết lập lại kết nối. Để giải nén bản ghi ở đầu nhận thành một , hãy sử dụng hàm

xử lý Lỗi[]

Xử lý lỗi xảy ra trong quá trình. Nguyên nhân rất có thể là do mất kết nối. Đóng ổ cắm để chúng tôi có thể thử lại vào sự kiện tiếp theo

makeSocket[]

Đây là một phương thức xuất xưởng cho phép các lớp con xác định loại ổ cắm chính xác mà chúng muốn. Việc triển khai mặc định tạo một ổ cắm TCP []

makePickle[bản ghi]

Chọn từ điển thuộc tính của bản ghi ở định dạng nhị phân với tiền tố độ dài và trả lại bản ghi ở trạng thái sẵn sàng để truyền qua ổ cắm. Các chi tiết của hoạt động này là tương đương với

data = pickle.dumps[record_attr_dict, 1]
datalen = struct.pack['>L', len[data]]
return datalen + data

Lưu ý rằng dưa chua không hoàn toàn an toàn. Nếu bạn lo ngại về bảo mật, bạn có thể muốn ghi đè phương thức này để triển khai cơ chế an toàn hơn. Ví dụ: bạn có thể ký các dưa chua bằng HMAC và sau đó xác minh chúng ở đầu nhận hoặc cách khác, bạn có thể vô hiệu hóa tính năng bỏ chọn các đối tượng chung ở đầu nhận

gửi[gói]

Gửi gói chuỗi byte được chọn đến ổ cắm. Định dạng của chuỗi byte đã gửi được mô tả trong tài liệu về

Chức năng này cho phép gửi một phần, điều này có thể xảy ra khi mạng bận

createSocket[]

Cố gắng tạo một ổ cắm; . Khi gặp lỗi ban đầu, trình xử lý sẽ bỏ thông báo mà nó đang cố gửi. Khi các tin nhắn tiếp theo được xử lý bởi cùng một phiên bản, nó sẽ không thử kết nối cho đến khi một thời gian trôi qua. Các tham số mặc định sao cho độ trễ ban đầu là một giây và nếu sau độ trễ đó mà kết nối vẫn không thể thực hiện được, trình xử lý sẽ nhân đôi độ trễ mỗi lần lên tối đa là 30 giây

Hành vi này được kiểm soát bởi các thuộc tính trình xử lý sau

  • logging.handlers06 [độ trễ ban đầu, mặc định là 1. 0 giây]

  • logging.handlers07 [số nhân, mặc định là 2. 0]

  • logging.handlers08 [độ trễ tối đa, mặc định là 30. 0 giây]

Điều này có nghĩa là nếu trình nghe từ xa khởi động sau khi trình xử lý đã được sử dụng, bạn có thể bị mất tin nhắn [vì trình xử lý thậm chí sẽ không thử kết nối cho đến khi hết thời gian trễ mà chỉ âm thầm gửi tin nhắn trong thời gian trễ]

DatagramHandler

Lớp, nằm trong mô-đun, kế thừa từ để hỗ trợ gửi thông báo ghi nhật ký qua ổ cắm UDP

lớp ghi nhật ký. người xử lý. DatagramHandler[máy chủ , cổng]

Trả về một phiên bản mới của lớp dự định giao tiếp với một máy từ xa có địa chỉ được cung cấp bởi máy chủ và cổng

Ghi chú

Vì UDP không phải là giao thức phát trực tuyến nên không có kết nối liên tục giữa phiên bản của trình xử lý này và máy chủ lưu trữ. Vì lý do này, khi sử dụng ổ cắm mạng, có thể phải thực hiện tra cứu DNS mỗi khi một sự kiện được ghi lại, điều này có thể gây ra một số độ trễ cho hệ thống. Nếu điều này ảnh hưởng đến bạn, bạn có thể tự tra cứu và khởi tạo trình xử lý này bằng cách sử dụng địa chỉ IP đã tra cứu thay vì tên máy chủ

Đã thay đổi trong phiên bản 3. 4. Nếu flush[]8 được chỉ định là StreamHandler5, ổ cắm tên miền Unix được tạo bằng cách sử dụng giá trị trong logging.handlers00 - nếu không, ổ cắm UDP được tạo.

phát ra[]

Chọn từ điển thuộc tính của bản ghi và ghi nó vào ổ cắm ở định dạng nhị phân. Nếu có lỗi với ổ cắm, hãy bỏ gói âm thầm. Để giải nén bản ghi ở đầu nhận thành một , hãy sử dụng hàm

makeSocket[]

Phương thức xuất xưởng của ở đây được ghi đè để tạo ổ cắm UDP []

gửi[s]

Gửi một chuỗi byte được chọn đến một ổ cắm. Định dạng của chuỗi byte đã gửi được mô tả trong tài liệu về

SysLogHandler

Lớp, nằm trong mô-đun, hỗ trợ gửi thông báo ghi nhật ký đến nhật ký hệ thống Unix từ xa hoặc cục bộ

lớp ghi nhật ký. người xử lý. SysLogHandler[địa chỉ=[ . SOCK_DGRAM SYSLOG_UDP_PORT], facility=LOG_USER, socktype=socket.SOCK_DGRAM]

Trả về một phiên bản mới của lớp dự định giao tiếp với một máy Unix từ xa có địa chỉ được cung cấp bởi địa chỉ dưới dạng bộ dữ liệu logging.handlers24. Nếu địa chỉ không được chỉ định, logging.handlers25 được sử dụng. Địa chỉ được sử dụng để mở một ổ cắm. Một cách khác để cung cấp bộ dữ liệu logging.handlers24 là cung cấp địa chỉ dưới dạng chuỗi, ví dụ: '/dev/log'. Trong trường hợp này, một ổ cắm tên miền Unix được sử dụng để gửi thông báo tới nhật ký hệ thống. Nếu cơ sở không được chỉ định, logging.handlers27 được sử dụng. Loại ổ cắm được mở tùy thuộc vào đối số socktype, được đặt mặc định và do đó mở ổ cắm UDP. Để mở một ổ cắm TCP [để sử dụng với các daemon nhật ký hệ thống mới hơn như rsyslog], hãy chỉ định một giá trị là

Lưu ý rằng nếu máy chủ của bạn không nghe trên cổng UDP 514, có thể không hoạt động. Trong trường hợp đó, hãy kiểm tra xem bạn nên sử dụng địa chỉ nào cho ổ cắm tên miền - địa chỉ này phụ thuộc vào hệ thống. Ví dụ: trên Linux, nó thường là '/dev/log' nhưng trên OS/X, nó là '/var/run/syslog'. Bạn sẽ cần kiểm tra nền tảng của mình và sử dụng địa chỉ thích hợp [bạn có thể cần thực hiện việc kiểm tra này trong thời gian chạy nếu ứng dụng của bạn cần chạy trên nhiều nền tảng]. Trên Windows, bạn phải sử dụng tùy chọn UDP

Ghi chú

Trên macOS 12. x [Monterey], Apple đã thay đổi hành vi của trình nền nhật ký hệ thống của họ - nó không còn lắng nghe trên ổ cắm tên miền nữa. Do đó, bạn không thể mong đợi làm việc trên hệ thống này

Xem gh-91070 để biết thêm thông tin

Đã thay đổi trong phiên bản 3. 2. loại vớ đã được thêm vào.

đóng[]

Đóng ổ cắm cho máy chủ từ xa

createSocket[]

Cố gắng tạo một ổ cắm và nếu đó không phải là ổ cắm datagram, hãy kết nối nó với đầu kia. Phương thức này được gọi trong quá trình khởi tạo trình xử lý, nhưng nó không được coi là lỗi nếu đầu kia không nghe vào thời điểm này - phương thức sẽ được gọi lại khi phát ra một sự kiện, nếu nhưng nó không được coi là lỗi nếu đầu kia

Mới trong phiên bản 3. 11

phát ra[bản ghi]

Bản ghi được định dạng và sau đó được gửi đến máy chủ nhật ký hệ thống. Nếu có thông tin ngoại lệ, nó sẽ không được gửi đến máy chủ

Đã thay đổi trong phiên bản 3. 2. 1. [Xem. bpo-12168. ] Trong các phiên bản trước, thông báo được gửi đến trình nền nhật ký hệ thống luôn được kết thúc bằng byte NUL, vì các phiên bản đầu tiên của các trình tiện ích này mong đợi một thông báo kết thúc NUL - ngay cả khi nó không có trong thông số kỹ thuật có liên quan [RFC 5424]. Các phiên bản gần đây hơn của các trình tiện ích này không mong đợi byte NUL nhưng sẽ loại bỏ nó nếu nó ở đó và thậm chí các trình tiện ích gần đây hơn [tuân thủ chặt chẽ hơn với RFC 5424] chuyển byte NUL vào như một phần của thông báo.

Để cho phép xử lý dễ dàng hơn các thông báo nhật ký hệ thống khi đối mặt với tất cả các hành vi daemon khác nhau này, việc nối thêm byte NUL đã được thực hiện có thể định cấu hình, thông qua việc sử dụng thuộc tính cấp lớp, logging.handlers32. Điều này mặc định là logging.handlers33 [duy trì hành vi hiện có] nhưng có thể được đặt thành logging.handlers34 trên phiên bản logging.handlers21 để phiên bản đó không nối thêm bộ kết thúc NUL

Đã thay đổi trong phiên bản 3. 3. [Xem. bpo-12419. ] Trong các phiên bản trước, không có cơ sở nào cho tiền tố “nhận dạng” hoặc “thẻ” để xác định nguồn gốc của thông báo. Điều này hiện có thể được chỉ định bằng cách sử dụng thuộc tính cấp lớp, mặc định là logging.handlers36 để duy trì hành vi hiện có, nhưng có thể được ghi đè trên phiên bản logging.handlers21 để phiên bản đó thêm nhận dạng vào mọi thư được xử lý. Lưu ý rằng nhận dạng được cung cấp phải là văn bản, không phải byte và được thêm vào trước thông báo chính xác như.

encodePriority[cơ sở , mức độ ưu tiên]

Mã hóa cơ sở và mức độ ưu tiên thành một số nguyên. Bạn có thể truyền vào chuỗi hoặc số nguyên - nếu chuỗi được truyền, từ điển ánh xạ bên trong được sử dụng để chuyển đổi chúng thành số nguyên

Các giá trị logging.handlers38 tượng trưng được xác định trong và phản ánh các giá trị được xác định trong tệp tiêu đề logging.handlers40

ưu tiên

Tên [chuỗi]

giá trị tượng trưng

logging.handlers41

LOG_ALERT

logging.handlers42 hoặc logging.handlers43

LOG_CRIT

logging.handlers44

LOG_DEBUG

logging.handlers45 hoặc logging.handlers46

LOG_EMERG

logging.handlers47 hoặc logging.handlers48

LOG_ERR

logging.handlers49

LOG_INFO

logging.handlers50

LOG_THÔNG BÁO

logging.handlers51 hoặc logging.handlers52

LOG_WARNING

Cơ sở

Tên [chuỗi]

giá trị tượng trưng

logging.handlers53

LOG_AUTH

logging.handlers54

LOG_AUTHPRIV

logging.handlers55

LOG_CRON

logging.handlers56

LOG_DAEMON

logging.handlers57

ĐĂNG_FTP

logging.handlers58

LOG_KERN

logging.handlers59

LOG_LPR

logging.handlers60

LOG_MAIL

logging.handlers61

LOG_TIN TỨC

logging.handlers62

LOG_SYSLOG

logging.handlers63

LOG_USER

logging.handlers64

LOG_UUCP

logging.handlers65

LOG_LOCAL0

logging.handlers66

LOG_LOCAL1

logging.handlers67

LOG_LOCAL2

logging.handlers68

LOG_LOCAL3

logging.handlers69

LOG_LOCAL4

logging.handlers70

LOG_LOCAL5

logging.handlers71

LOG_LOCAL6

logging.handlers72

LOG_LOCAL7

mapPriority[tên cấp độ]

Ánh xạ tên mức ghi nhật ký thành tên ưu tiên nhật ký hệ thống. Bạn có thể cần phải ghi đè điều này nếu bạn đang sử dụng các mức tùy chỉnh hoặc nếu thuật toán mặc định không phù hợp với nhu cầu của bạn. Thuật toán mặc định ánh xạ logging.handlers73, logging.handlers74, logging.handlers75, logging.handlers76 và logging.handlers77 thành các tên nhật ký hệ thống tương đương và tất cả các tên cấp độ khác thành 'cảnh báo'

NTEventLogHandler

Lớp, nằm trong mô-đun, hỗ trợ gửi thông báo ghi nhật ký tới nhật ký sự kiện Windows NT, Windows 2000 hoặc Windows XP cục bộ. Trước khi bạn có thể sử dụng nó, bạn cần cài đặt tiện ích mở rộng Win32 của Mark Hammond cho Python

lớp ghi nhật ký. người xử lý. NTEventLogHandler[tên ứng dụng , dllname=None, logtype='Application']

Trả về một thể hiện mới của lớp. Tên ứng dụng được sử dụng để xác định tên ứng dụng khi nó xuất hiện trong nhật ký sự kiện. Một mục đăng ký thích hợp được tạo bằng tên này. Tên dll nên cung cấp tên đường dẫn đủ điều kiện của một. dll hoặc. exe chứa các định nghĩa thông báo để giữ trong nhật ký [nếu không được chỉ định, thì sử dụng logging.handlers81 - phần này được cài đặt với các tiện ích mở rộng Win32 và chứa một số định nghĩa thông báo giữ chỗ cơ bản. Lưu ý rằng việc sử dụng các trình giữ chỗ này sẽ làm cho nhật ký sự kiện của bạn trở nên lớn hơn vì toàn bộ nguồn thông báo được lưu giữ trong nhật ký. Nếu bạn muốn nhật ký mỏng hơn, bạn phải chuyển tên của chính mình. dll hoặc. exe chứa định nghĩa thông báo bạn muốn sử dụng trong nhật ký sự kiện]. Loại nhật ký là một trong số logging.handlers82, logging.handlers83 hoặc logging.handlers84 và mặc định là logging.handlers82

đóng[]

Tại thời điểm này, bạn có thể xóa tên ứng dụng khỏi sổ đăng ký dưới dạng nguồn của các mục nhật ký sự kiện. Tuy nhiên, nếu bạn làm điều này, bạn sẽ không thể xem các sự kiện như bạn dự định trong Trình xem nhật ký sự kiện - nó cần có thể truy cập vào sổ đăng ký để lấy. tên dll. Phiên bản hiện tại không làm điều này

phát ra[bản ghi]

Xác định ID thông báo, danh mục sự kiện và loại sự kiện, sau đó ghi thông báo vào nhật ký sự kiện NT

getEventCategory[bản ghi]

Trả về danh mục sự kiện cho bản ghi. Ghi đè điều này nếu bạn muốn chỉ định danh mục của riêng mình. Phiên bản này trả về 0

getEventType[bản ghi]

Trả về loại sự kiện cho bản ghi. Ghi đè lên điều này nếu bạn muốn chỉ định các loại của riêng bạn. Phiên bản này thực hiện ánh xạ bằng cách sử dụng thuộc tính typemap của trình xử lý, thuộc tính này được thiết lập trong logging.handlers86 thành một từ điển chứa ánh xạ cho logging.handlers73, logging.handlers74, logging.handlers75, logging.handlers76 và logging.handlers77. Nếu bạn đang sử dụng các cấp độ của riêng mình, bạn sẽ cần ghi đè phương thức này hoặc đặt một từ điển phù hợp vào thuộc tính bản đồ của trình xử lý

getMessageID[bản ghi]

Trả về ID tin nhắn cho bản ghi. Nếu bạn đang sử dụng tin nhắn của riêng mình, bạn có thể thực hiện việc này bằng cách chuyển tin nhắn đến bộ ghi dưới dạng ID thay vì chuỗi định dạng. Sau đó, tại đây, bạn có thể sử dụng tra cứu từ điển để lấy ID tin nhắn. Phiên bản này trả về 1, là ID tin nhắn cơ sở trong logging.handlers92

Trình xử lý SMTP

Lớp, nằm trong mô-đun, hỗ trợ gửi thông báo ghi nhật ký đến địa chỉ email qua SMTP

lớp ghi nhật ký. người xử lý. SMTPHandler[mailhost , fromaddr . 0, toaddrs, subject, credentials=None, secure=None, timeout=1.0]

Trả về một thể hiện mới của lớp. Phiên bản được khởi tạo với địa chỉ từ và đến và dòng chủ đề của email. Toaddrs phải là một danh sách các chuỗi. Để chỉ định cổng SMTP không chuẩn, hãy sử dụng định dạng bộ [máy chủ, cổng] cho đối số máy chủ lưu trữ. Nếu bạn sử dụng một chuỗi, cổng SMTP tiêu chuẩn sẽ được sử dụng. Nếu máy chủ SMTP của bạn yêu cầu xác thực, bạn có thể chỉ định một bộ [tên người dùng, mật khẩu] cho đối số thông tin xác thực

Để chỉ định việc sử dụng giao thức bảo mật [TLS], hãy chuyển một bộ vào đối số bảo mật. Điều này sẽ chỉ được sử dụng khi thông tin đăng nhập xác thực được cung cấp. Bộ dữ liệu phải là bộ trống hoặc bộ giá trị đơn có tên của tệp khóa hoặc bộ giá trị 2 có tên của tệp khóa và tệp chứng chỉ. [Bộ dữ liệu này được truyền cho phương thức. ]

Thời gian chờ có thể được chỉ định để liên lạc với máy chủ SMTP bằng cách sử dụng đối số thời gian chờ

Mới trong phiên bản 3. 3. Đã thêm đối số thời gian chờ.

phát ra[bản ghi]

Định dạng bản ghi và gửi nó đến người nhận được chỉ định

getSubject[bản ghi]

Nếu bạn muốn chỉ định dòng chủ đề phụ thuộc vào bản ghi, hãy ghi đè phương thức này

Trình xử lý bộ nhớ

Lớp, nằm trong mô-đun, hỗ trợ đệm các bản ghi nhật ký trong bộ nhớ, định kỳ xóa chúng tới trình xử lý đích. Xả xảy ra bất cứ khi nào bộ đệm đầy hoặc khi nhìn thấy một sự kiện có mức độ nghiêm trọng nhất định trở lên

là một lớp con của lớp tổng quát hơn, là một lớp trừu tượng. Bộ đệm này ghi lại các bản ghi trong bộ nhớ. Bất cứ khi nào mỗi bản ghi được thêm vào bộ đệm, một kiểm tra được thực hiện bằng cách gọi StreamHandler01 để xem liệu bộ đệm có nên được xóa hay không. Nếu cần, thì flush[] dự kiến ​​sẽ thực hiện việc xả nước

lớp ghi nhật ký. người xử lý. BufferingHandler[dung lượng]

Khởi tạo trình xử lý với bộ đệm có dung lượng đã chỉ định. Ở đây, dung lượng có nghĩa là số lượng bản ghi nhật ký được lưu vào bộ đệm

phát ra[bản ghi]

Nối bản ghi vào bộ đệm. Nếu trả về true, gọi để xử lý bộ đệm

xả[]

Bạn có thể ghi đè điều này để thực hiện hành vi xả tùy chỉnh. Phiên bản này chỉ làm trống bộ đệm

nênFlush[bản ghi]

Trả lại logging.handlers33 nếu bộ đệm hết dung lượng. Phương thức này có thể được ghi đè để thực hiện các chiến lược xóa tùy chỉnh

lớp ghi nhật ký. người xử lý. Trình xử lý bộ nhớ[dung lượng , flushLevel=ERROR, target=None, flushOnClose=True]

Trả về một thể hiện mới của lớp. Phiên bản được khởi tạo với kích thước dung lượng bộ đệm [số lượng bản ghi được lưu vào bộ đệm]. Nếu flushLevel không được chỉ định, logging.handlers76 được sử dụng. Nếu không có mục tiêu nào được chỉ định, mục tiêu sẽ cần được đặt bằng cách sử dụng trước khi trình xử lý này thực hiện bất kỳ điều gì hữu ích. Nếu flushOnClose được chỉ định là logging.handlers34, thì bộ đệm sẽ không bị xóa khi đóng trình xử lý. Nếu không được chỉ định hoặc được chỉ định là logging.handlers33, hành vi xóa bộ đệm trước đó sẽ xảy ra khi đóng trình xử lý

Đã thay đổi trong phiên bản 3. 6. Tham số flushOnClose đã được thêm vào.

đóng[]

Gọi , đặt mục tiêu thành StreamHandler5 và xóa bộ đệm

xả[]

Đối với a , flushing có nghĩa là chỉ gửi các bản ghi được đệm tới đích, nếu có. Bộ đệm cũng bị xóa khi điều này xảy ra. Ghi đè nếu bạn muốn hành vi khác

setTarget[mục tiêu]

Đặt trình xử lý đích cho trình xử lý này

nênFlush[bản ghi]

Kiểm tra bộ đệm đầy hoặc bản ghi ở flushLevel hoặc cao hơn

Trình xử lý HTTP

Lớp, nằm trong mô-đun, hỗ trợ gửi thông báo ghi nhật ký tới máy chủ web, sử dụng ngữ nghĩa StreamHandler16 hoặc StreamHandler17

lớp ghi nhật ký. người xử lý. HTTPHandler[máy chủ , url, method='GET', secure=False, credentials=None, context=None]

Trả về một thể hiện mới của lớp. Máy chủ có thể ở dạng StreamHandler19, nếu bạn cần sử dụng một số cổng cụ thể. Nếu không có phương thức nào được chỉ định, thì sử dụng StreamHandler16. Nếu bảo mật là đúng, kết nối HTTPS sẽ được sử dụng. Tham số ngữ cảnh có thể được đặt thành một phiên bản để định cấu hình cài đặt SSL được sử dụng cho kết nối HTTPS. Nếu thông tin đăng nhập được chỉ định, thì đó phải là 2 bộ bao gồm tên người dùng và mật khẩu, sẽ được đặt trong tiêu đề 'Ủy quyền' HTTP bằng cách sử dụng xác thực Cơ bản. Nếu bạn chỉ định thông tin đăng nhập, bạn cũng nên chỉ định safe=True để tên người dùng và mật khẩu của bạn không được chuyển dưới dạng văn bản rõ ràng qua dây

Đã thay đổi trong phiên bản 3. 5. Tham số bối cảnh đã được thêm vào.

mapLogRecord[bản ghi]

Cung cấp một từ điển, dựa trên StreamHandler22, được mã hóa URL và gửi đến máy chủ web. Việc triển khai mặc định chỉ trả về StreamHandler23. Phương thức này có thể bị ghi đè nếu e. g. chỉ một tập hợp con của sẽ được gửi đến máy chủ web hoặc nếu cần tùy chỉnh cụ thể hơn những gì được gửi đến máy chủ

phát ra[bản ghi]

Gửi bản ghi đến máy chủ web dưới dạng từ điển được mã hóa URL. Phương thức được sử dụng để chuyển đổi bản ghi thành từ điển được gửi

Ghi chú

Vì việc chuẩn bị một bản ghi để gửi nó đến một máy chủ web không giống như một thao tác định dạng chung, nên việc sử dụng để chỉ định một cho một không có tác dụng. Thay vì gọi , trình xử lý này gọi và sau đó mã hóa từ điển ở dạng phù hợp để gửi đến máy chủ web

Trình xử lý hàng đợi

Mới trong phiên bản 3. 2

Lớp, nằm trong mô-đun, hỗ trợ gửi thông báo ghi nhật ký đến một hàng đợi, chẳng hạn như những thông báo được triển khai trong mô-đun hoặc

Cùng với lớp, có thể được sử dụng để cho phép các trình xử lý thực hiện công việc của họ trên một luồng riêng biệt với luồng thực hiện ghi nhật ký. Điều này rất quan trọng trong các ứng dụng web và cả các ứng dụng dịch vụ khác, nơi các luồng phục vụ máy khách cần phản hồi nhanh nhất có thể, trong khi mọi hoạt động có khả năng chậm [chẳng hạn như gửi email qua ] được thực hiện trên một luồng riêng biệt

lớp ghi nhật ký. người xử lý. QueueHandler[hàng đợi]

Trả về một thể hiện mới của lớp. Thể hiện được khởi tạo với hàng đợi để gửi tin nhắn đến. Hàng đợi có thể là bất kỳ đối tượng giống hàng đợi nào; . Hàng đợi không bắt buộc phải có API theo dõi tác vụ, nghĩa là bạn có thể sử dụng các phiên bản cho hàng đợi

Ghi chú

Nếu bạn đang sử dụng, bạn nên tránh sử dụng và thay vào đó hãy sử dụng

phát ra[bản ghi]

Enqueues kết quả của việc chuẩn bị LogRecord. Nếu một ngoại lệ xảy ra [e. g. vì một hàng đợi giới hạn đã đầy], phương thức này được gọi để xử lý lỗi. Điều này có thể dẫn đến việc bản ghi bị hủy một cách lặng lẽ [nếu StreamHandler46 là logging.handlers34] hoặc một thông báo được in tới StreamHandler48 [nếu StreamHandler46 là logging.handlers33]

chuẩn bị[bản ghi]

Lập hồ sơ xếp hàng. Đối tượng được phương thức này trả về được xếp vào hàng đợi

Việc triển khai cơ sở định dạng bản ghi để hợp nhất thông báo, đối số, ngoại lệ và thông tin ngăn xếp, nếu có. Nó cũng xóa các mục không thể chọn khỏi bản ghi tại chỗ. Cụ thể, nó ghi đè các thuộc tính StreamHandler51 và StreamHandler52 của bản ghi bằng thông báo đã hợp nhất [thu được bằng cách gọi phương thức của trình xử lý] và đặt các thuộc tính StreamHandler54, StreamHandler55 và StreamHandler56 thành StreamHandler5

Bạn có thể muốn ghi đè phương thức này nếu muốn chuyển đổi bản ghi thành chuỗi dict hoặc JSON hoặc gửi bản sao đã sửa đổi của bản ghi trong khi vẫn giữ nguyên bản gốc

Ghi chú

Việc triển khai cơ sở định dạng thư với các đối số, đặt các thuộc tính StreamHandler52 và StreamHandler51 cho thư được định dạng và đặt các thuộc tính StreamHandler54 và StreamHandler56 thành StreamHandler5 để cho phép chọn lọc và ngăn chặn các nỗ lực định dạng tiếp theo. Điều này có nghĩa là trình xử lý ở bên sẽ không có thông tin để thực hiện định dạng tùy chỉnh, e. g. ngoại lệ. Bạn có thể muốn phân lớp StreamHandler32 và ghi đè phương thức này lên e. g. tránh đặt StreamHandler56 thành StreamHandler5. Lưu ý rằng các thay đổi của StreamHandler52 / StreamHandler51 / StreamHandler54 có liên quan đến việc đảm bảo bản ghi có thể chọn được và bạn có thể hoặc không thể tránh làm điều đó tùy thuộc vào việc StreamHandler54 của bạn có thể chọn được hay không. [Lưu ý rằng bạn có thể phải xem xét không chỉ mã của riêng mình mà còn cả mã trong bất kỳ thư viện nào bạn sử dụng. ]

enqueue[bản ghi]

Liệt kê bản ghi trên hàng đợi bằng cách sử dụng StreamHandler71;

QueueListener

Mới trong phiên bản 3. 2

Lớp, nằm trong mô-đun, hỗ trợ nhận thông báo ghi nhật ký từ hàng đợi, chẳng hạn như các thông báo được triển khai trong mô-đun hoặc. Các tin nhắn được nhận từ một hàng đợi trong một luồng nội bộ và được chuyển, trên cùng một luồng, tới một hoặc nhiều trình xử lý để xử lý. Mặc dù bản thân nó không phải là trình xử lý, nhưng nó được ghi lại ở đây vì nó hoạt động song song với

Cùng với lớp, có thể được sử dụng để cho phép các trình xử lý thực hiện công việc của họ trên một luồng riêng biệt với luồng thực hiện ghi nhật ký. Điều này rất quan trọng trong các ứng dụng web và cả các ứng dụng dịch vụ khác, nơi các luồng phục vụ máy khách cần phản hồi nhanh nhất có thể, trong khi mọi hoạt động có khả năng chậm [chẳng hạn như gửi email qua ] được thực hiện trên một luồng riêng biệt

lớp ghi nhật ký. người xử lý. QueueListener[hàng đợi , *handlers, respect_handler_level=False]

Trả về một thể hiện mới của lớp. Phiên bản được khởi tạo với hàng đợi để gửi tin nhắn đến và danh sách các trình xử lý sẽ xử lý các mục được đặt trên hàng đợi. Hàng đợi có thể là bất kỳ đối tượng giống hàng đợi nào; . Hàng đợi không bắt buộc phải có API theo dõi tác vụ [mặc dù nó được sử dụng nếu có], nghĩa là bạn có thể sử dụng các phiên bản cho hàng đợi

Ghi chú

Nếu bạn đang sử dụng, bạn nên tránh sử dụng và thay vào đó hãy sử dụng

Nếu StreamHandler87 là logging.handlers33, cấp độ của trình xử lý được tôn trọng [so với cấp độ của tin nhắn] khi quyết định có chuyển tin nhắn đến trình xử lý đó hay không;

Đã thay đổi trong phiên bản 3. 5. Đối số StreamHandler87 đã được thêm vào.

dequeue[chặn]

Xếp hàng một bản ghi và trả lại nó, chặn tùy chọn

Việc triển khai cơ sở sử dụng StreamHandler90. Bạn có thể muốn ghi đè phương thức này nếu bạn muốn sử dụng thời gian chờ hoặc làm việc với việc triển khai hàng đợi tùy chỉnh

chuẩn bị[bản ghi]

Lập biên bản xử lý

Việc triển khai này chỉ trả về bản ghi đã chuyển vào. Bạn có thể muốn ghi đè phương thức này nếu bạn cần thực hiện bất kỳ thao tác sắp xếp hoặc thao tác tùy chỉnh nào đối với bản ghi trước khi chuyển nó tới trình xử lý

xử lý[bản ghi]

Xử lý một bản ghi

Điều này chỉ lặp qua các trình xử lý cung cấp cho họ bản ghi để xử lý. Đối tượng thực tế được chuyển đến trình xử lý là đối tượng được trả về từ

bắt đầu[]

Bắt đầu người nghe

Điều này khởi động một luồng nền để theo dõi hàng đợi để LogRecords xử lý

dừng[]

Dừng người nghe

Điều này yêu cầu luồng kết thúc và sau đó đợi nó làm như vậy. Lưu ý rằng nếu bạn không gọi điều này trước khi ứng dụng của bạn thoát, có thể có một số bản ghi vẫn còn trên hàng đợi và sẽ không được xử lý

enqueue_sentinel[]

Viết một lính canh vào hàng đợi để báo cho người nghe thoát. Việc triển khai này sử dụng StreamHandler71. Bạn có thể muốn ghi đè phương thức này nếu bạn muốn sử dụng thời gian chờ hoặc làm việc với việc triển khai hàng đợi tùy chỉnh

Làm cách nào để ghi nhật ký sử dụng bộ nhớ trong Python?

Tất cả những gì bạn phải làm là thêm chức năng trang trí và chức năng process_memory trong mã của bạn và điều này sẽ cung cấp cho bạn bộ nhớ được tiêu thụ bởi .

Tại sao Python chiếm quá nhiều bộ nhớ?

Những số đó có thể dễ dàng khớp với số nguyên 64 bit, vì vậy người ta hy vọng Python sẽ lưu trữ một triệu số nguyên đó trong không quá ~8MB. một triệu đối tượng 8 byte. Trên thực tế, Python sử dụng nhiều hơn 35 MB RAM để lưu trữ những con số này. Tại sao? . Because Python integers are objects, and objects have a lot of memory overhead.

Python có quản lý bộ nhớ không?

Quản lý bộ nhớ trong Python liên quan đến một đống riêng chứa tất cả các đối tượng Python và cấu trúc dữ liệu . Việc quản lý vùng riêng tư này được đảm bảo nội bộ bởi trình quản lý bộ nhớ Python.

Làm cách nào để sử dụng CPU bằng Python?

Sử dụng mã dành riêng cho nền tảng, chẳng hạn như sử dụng hệ điều hành. popen["ps"] hoặc tương tự cho các hệ thống *nix và MEMORYSTATUS trong ctypes. gió thổi. kernel32 [xem công thức này trên ActiveState] cho nền tảng Windows. .
kỉ niệm

Chủ Đề