2017-08-10 26 views
0

現在の日付と時刻の出力ログファイルを取得する必要があります。私のコードでは、5つのログファイルが作成されます。各ログファイル名には、現在の日付と時刻が含まれている必要があります。私は自分のコードで "TimedRotatingFileHandler"を使用したくありません。しかし、 "RotatingFileHandler"を使用すると、ファイル名に時間と日付を追加する方法がわかりません。 RotatingFileHandlerが使用されている場合RotatingFilehandlerを使用して作成されたログファイルにタイムスタンプと日付を追加する方法

import time 
import logging 
from logging.handlers import RotatingFileHandler 
from datetime import datetime 
from logging import FileHandler 
from time import strftime 
now =datetime.now() 
Filename= now.strftime('app_%H_%M_%d_%m_%Y.log') 


log_formatter = logging.Formatter('[%(asctime)s][%(levelname)s](%(threadName)-10s) %(message)s') 

logFile = 'D:/Tasks/1212/app'+ Filename 

my_handler = RotatingFileHandler(logFile, mode='a', maxBytes=5*1024, 
          backupCount=5, encoding=None, delay=0) 

my_handler.setFormatter(log_formatter) 
my_handler.setLevel(logging.INFO) 
app_log = logging.getLogger('root') 
app_log.setLevel(logging.INFO) 
app_log.addHandler(my_handler) 

while True: 
    app_log.info("data") 
    time.sleep(1) 
logging.shutdown 
+0

ようこそapp.log.2など、その後、彼らは名前に変更されている存在』!私はそれを作るために、スペルや文法の間違いを除去するためにあなたの質問を編集しました人々があなたの問題を理解しやすくなりました。私は意味を歪ませていないことを確認してください。質問は依然としてあなたが求めていたものですか?また、 'RotatingFileHandler'を使用して推論を追加し、 RimedRotatingFileHandler'。これは、人々があなたの質問に、可能な制約についてのより良い考えに答えるようにするでしょう。 – jotasi

答えて

0

、ログファイルの名前が最初に固定され、ときに新しいログファイルを回転させることで、常に先頭のファイル名に基づいています。ここで私はこれまで試したものです。

ちょうどそれのドキュメントを参照してください。たとえば

、5のバックアップ数と「app.log」のベースファイル名で、あなたは「app.log」を得るでしょう、「アプリ.log.1 "、" app.log.2 "、...から" app.log.5 "に変更します。 書き込み先のファイルは常に "app.log" - ファイルがいっぱいになると閉じられ、 "app.log.1"に名前が変更され、ファイルapp.log.1 "、" app.log。 2" スタックオーバーフローに 『『などapp.log.3』

関連する問題