Như đã đề cập, các trình xử lý rất dễ tạo và thêm rằng bạn có thể sử dụng hai trình xử lý tốt hơn. Tuy nhiên, nếu vì lý do nào đó bạn muốn dính vào một, Python logging cookbook có phần mô tả nhiều hay ít những gì bạn muốn làm: đăng nhập vào cả bàn điều khiển và tệp, nhưng ở các cấp độ khác nhau (nó thậm chí còn cho bạn biết cách thực hiện định dạng khác). Nó thực hiện nó với một đơn StreamHandler
chứ không phải là một FileHandler
, mặc dù:
import logging
# set up logging to file - see previous section for more details
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename='/temp/myapp.log',
filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger('').addHandler(console)
# Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.')
# Now, define a couple of other loggers which might represent areas in your
# application:
logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')
logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')
Edit: Như đã thảo luận trong các ý kiến mã này vẫn tạo ra hai bộ xử lý, nhưng "giấu" một xây dựng thông qua việc sử dụng các basicConfig() . Tôi thực sự khuyến khích bạn tạo cả hai cách rõ ràng.
Đây vẫn là hai trình xử lý. Chỉ bạn mới "che giấu" việc tạo ra 'FileHandler' bằng' basicConfig (...) ', tôi muốn tạo chúng một cách rõ ràng. – plundra
Bạn nói đúng, tất nhiên. Tuy nhiên, tôi cho rằng điều này (hoặc tương tự) là những gì người hỏi có trong tâm trí khi anh ta nói rằng anh ta đã xuất ra hai nơi chỉ với một logger. Tôi cũng phải đồng ý với bạn về điểm khác của bạn: nó rõ ràng hơn và dễ hiểu hơn để khai báo cả hai trình xử lý IMO một cách rõ ràng. – bdeniker