내가 상속 파이썬 로깅 핸들러의 RotatingFileHandler
우선합니다.
RotatingFileHandler 핸들러 (이것은 첫 번째 파일을 생성 할 때 또는 롤오버가 발생했을 때) 처리기 로그 롤오버 또는 안 경우
self.shouldRollover()
방법, 그것을 확인 로그한다. 만들 self.baseFilename
를 사용할 것이다 self.baseFilename
값을 갖는다.
이 방법이 return 1
인 경우 롤오버가 발생하거나 return 0
이 발생해야합니다.
오버라이드하여이 핸들러가 롤오버를 만들고 롤오버를 통해 새 로그 파일에 사용할 이름을 정의합니다.
----------------------------------------- 편집 --- --------------------------------------
예제 코드를 게시합니다.
from logging import handlers
class DailyRotatingFileHandler(handlers.RotatingFileHandler):
def __init__(self, alias, basedir, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0):
"""
@summary:
Set self.baseFilename to date string of today.
The handler create logFile named self.baseFilename
"""
self.basedir_ = basedir
self.alias_ = alias
self.baseFilename = self.getBaseFilename()
handlers.RotatingFileHandler.__init__(self, self.baseFilename, mode, maxBytes, backupCount, encoding, delay)
def getBaseFilename(self):
"""
@summary: Return logFile name string formatted to "today.log.alias"
"""
self.today_ = datetime.date.today()
basename_ = self.today_.strftime("%Y-%m-%d") + ".log" + '.' + self.alias_
return os.path.join(self.basedir_, basename_)
def shouldRollover(self, record):
"""
@summary:
Rollover happen
1. When the logFile size is get over maxBytes.
2. When date is changed.
@see: BaseRotatingHandler.emit
"""
if self.stream is None:
self.stream = self._open()
if self.maxBytes > 0 :
msg = "%s\n" % self.format(record)
self.stream.seek(0, 2)
if self.stream.tell() + len(msg) >= self.maxBytes:
return 1
if self.today_ != datetime.date.today():
self.baseFilename = self.getBaseFilename()
return 1
return 0
이 DailyRotatingFileHandler는 이미 시간을 처리하고 파일을 생성하지만 내가 원하는 것은 파이썬 로깅 기능을 facilating 파이썬 로깅 함께하는 방법을 알고
2016-10-05.log.alias
2016-10-05.log.alias.1
2016-10-05.log.alias.2
2016-10-06.log.alias
2016-10-06.log.alias.1
2016-10-07.log.alias.1
어떻게했는지 예제 코드가 있습니까? – FredFury
@FredFury 예제 코드를 추가하면 도움이되기를 기대합니다. – SangminKim