Python 모듈의 Logging(4) - 일반적인handlers 사용
、StreamHandler
handler—— logging handler 。
sys.stdout, sys.stderr ( , write() flush() )。
:
class logging.StreamHandler(stream=None)
stream , stream sys.stderr。
、FileHandler
logging handler 。 StreamHandler。 。
:
class logging.FileHandler(filename, mode='a', encoding=None, delay=False)
append,delay true , emit 。 , 。
、NullHandler
handler,logging handler 。
。
4.WatchedFileHandler는logging에 있습니다.handlers 모듈에서파일의 상태를 감시하는 데 사용됩니다. 파일이 바뀌면 현재 흐름을 닫고 파일을 다시 열고 새 흐름을 만듭니다.newsyslog나logrotate의 사용으로 파일이 바뀔 수 있습니다.이handler는 linux/unix 시스템을 위한 것입니다. 윈도우즈 시스템에서 열려 있는 파일은 바뀌지 않기 때문입니다.매개변수는 FileHandler와 같습니다.
class logging.handlers.WatchedFileHandler(filename, mode='a', encoding=None, delay=False) 5, RotatingFileHandler
logging에 있습니다.handlers는 순환 로그 파일을 지원합니다.
class logging.handlers.RotatingFileHandler(filename,mode='a', maxBytes=0,backupCount=0,encoding=None,delay=0) 매개 변수 maxBytes와 backupCount는 로그 파일이 maxBytes에 도달할 때 rollover를 허용합니다.파일 크기가 maxBytes에 도달하거나 초과할 때 로그 파일을 새로 만듭니다.상술한 이 두 매개 변수 중 하나가 0일 때 롤러버는 발생하지 않는다.즉 파일에 maxBytes 제한이 없다는 것이다.백업 카운트는 백업 수량입니다. 최대 몇 개의 백업이 있을 수 있는지입니다.로그의 basename 뒤에.0-.n의 접미사, 예를 들어 example.log.1,example.log.1,…,example.log.10.현재 사용 중인 로그 파일은 basename.log.
6. TimedRotatingFileHandler
logging에 있는 시간 순환 로그handler.handlers, 새 로그 파일을 정시에 생성하는 것을 지원합니다.
class logging.handlers.TimedRotatingFileHandler(filname, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False) 매개 변수 when은 시간 간격의 유형을 결정하고, 매개 변수 interval은 시간 간격을 얼마나 정하는가를 결정한다.예를 들어 when='D', interval=2는 이틀의 시간 간격을 가리키며backupCount는 로그 파일을 몇 개 남길 수 있는지 결정한다.수량을 초과하면 오래된 로그 파일을 버릴 것이다.
when의 매개 변수가 시간 간격의 유형을 결정합니다.둘 사이의 관계는 다음과 같습니다.
'S' |
'M' |
'H' |
'D' |
'W0'-'W6' |
'midnight' |
utc UTC 。
7. 기타handler--SocketHandler,DatagramHandler,SysLogHandler,NtEventHandler,SMTPHandler,MemoryHandler,HTTPHandler 등handler는 모두 잘 사용하지 않기 때문에 구체적으로 소개하는 것은 공식 문서의 기타handlers를 참고하십시오
다음은 간단한 예를 사용하여handler의 사용을 보여 줍니다.
예 1 - 구성 파일을 사용하지 않는 방법(StreamHandler):
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
# handler
console.setFormatter(formatter)
#add the handler to the root logger
# root logger handler
logging.getLogger('').addHandler(console)
Now, we can log to the root logger, or any other logger. First the root...
# root logger
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.')
:
root : INFO Jackdaws love my big sphinx of quartz.
myapp.area1 : INFO How quickly daft jumping zebras vex.
myapp.area2 : WARNING Jail zesty vixen who grabbed pay from quack.
myapp.area2 : ERROR The five boxing wizards jump quickly.
예2 - 프로필을 사용하는 방식 (TimedRotatingFileHandler): log.conf 로그 구성 파일:
[loggers]
keys=root,test.subtest,test
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=INFO
handlers=consoleHandler,fileHandler
[logger_test]
level=INFO
handlers=consoleHandler,fileHandler
qualname=tornado
propagate=0
[logger_test.subtest]
level=INFO
handlers=consoleHandler,fileHandler
qualname=rocket.raccoon
propagate=0
[handler_consoleHandler] # handler
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_fileHandler] # handler
class=logging.handlers.TimedRotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('rocket_raccoon_log','midnight')
[formatter_simpleFormatter]
format=[%(asctime)s-%(name)s(%(levelname)s)%(filename)s:%(lineno)d]%(message)s
datefmt=
logging.config.fileConfig('conf/log.conf')
logger = getLogging()
logger 가져오기 방법:
def getLogging():
return logging.getLogger("test.subtest")
logger 구성 및 호출:
logging.config.fileConfig('conf/log.conf')
logger = getLogging()
logger.info("this is an example!")
:
[2016-07-01 09:22:06,470-test.subtest(INFO)main.py:55]this is an example!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 는 자신의 LOG 정 보 를 실현 합 니 다.2.사용자 공간 프로그램 개발 시 LOG 사용Android 시스템 은 사용자 공간 에서 경량급 logger 로그 시스템 을 제공 합 니 다.커 널 에서 이 루어 진 장치 구동 으로 사용자 공간의 logcat 도구 와...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.