python 3 loggingログカット
2829 ワード
背景
普段作成しているプロジェクトやスクリプトは、実行時間が長くなるとログやログファイルが大量に生成されるのは避けられません.ログを記録しないと問題が発生するのではないかと心配し、ログを記録することは空間の浪費を心配するため、プロジェクト開発の際にログ管理を重視しなければならない.
python logging handlersモジュールを使用してログを管理する手順を説明します.
インストール
pythonはモジュールを備えており、インストールは不要です
loggingモジュールに付属する2つのログカット管理方法
RotatingFileHandler
logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0)
TimedRotatingFileHandle
logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)
パラメータ構成
You can use the when to specify the type of interval. The list of possible values is below. Note that they are not case sensitive.
Value
Type of interval
If/how atTime is used
Seconds
Ignored
Minutes
Ignored
Hours
Ignored
Days
Ignored
Weekday (0=Monday)
Used to compute initial rollover time
Roll over at midnight, if atTime not specified, else at time atTime
Used to compute initial rollover time
https://docs.python.org/3.6/library/logging.handlers.html
普段作成しているプロジェクトやスクリプトは、実行時間が長くなるとログやログファイルが大量に生成されるのは避けられません.ログを記録しないと問題が発生するのではないかと心配し、ログを記録することは空間の浪費を心配するため、プロジェクト開発の際にログ管理を重視しなければならない.
python logging handlersモジュールを使用してログを管理する手順を説明します.
インストール
pythonはモジュールを備えており、インストールは不要です
loggingモジュールに付属する2つのログカット管理方法
RotatingFileHandler
logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0)
import time
import logging
import logging.handlers
# logging
logging.basicConfig()
logger = logging.getLogger('script')
logger.setLevel(logging.INFO)
# TimedRotatingFileHandler
timefilehandler = logging.handlers.TimedRotatingFileHandler(
"test.log", #
when='S', # S M H D W S
interval=1, #
backupCount=7 #
)
# , strftime
timefilehandler.suffix = "%Y-%m-%d_%H-%M-%S.log"
formatter = logging.Formatter('%(asctime)s|%(name)s | %(levelname)s | %(message)s')
timefilehandler.setFormatter(formatter)
logger.addHandler(timefilehandler)
for i in range(10):
logger.info("log test")
time.sleep(1)
TimedRotatingFileHandle
logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)
import time
import logging
import logging.handlers
# logging
logging.basicConfig()
logger = logging.getLogger('script')
logger.setLevel(logging.INFO)
# TimedRotatingFileHandler
timefilehandler = logging.handlers.TimedRotatingFileHandler(
"test.log", #
maxBytes=50000, #
backupCount=7 #
)
# , strftime
timefilehandler.suffix = "%Y-%m-%d_%H-%M-%S.log"
formatter = logging.Formatter('%(asctime)s|%(name)s | %(levelname)s | %(message)s')
timefilehandler.setFormatter(formatter)
logger.addHandler(timefilehandler)
for i in range(10):
logger.info("log test")
time.sleep(1)
パラメータ構成
You can use the when to specify the type of interval. The list of possible values is below. Note that they are not case sensitive.
Value
Type of interval
If/how atTime is used
'S'
Seconds
Ignored
'M'
Minutes
Ignored
'H'
Hours
Ignored
'D'
Days
Ignored
'W0'-'W6'
Weekday (0=Monday)
Used to compute initial rollover time
'midnight'
Roll over at midnight, if atTime not specified, else at time atTime
Used to compute initial rollover time
https://docs.python.org/3.6/library/logging.handlers.html