簡體   English   中英

創建日志文件

[英]Creating log-files

我是這里的新手,還是編程的新手。

我的問題是,我的程序應該在運行期間創建一個日志文件

它看起來應該像這樣:

開始復制“ Log X” | 至今 時間

開始壓縮“ Log X” | 至今 時間| 文件服務

Ende壓縮“ Log X” | 至今 時間| 文件服務

開始刪除“ Log X” | 至今 時間

結束刪除“ Log X” | 至今 時間

...

'“ Log X”表示文件名

當我再次運行程序時,“新日志文件”應附加到“舊文件”

到目前為止,這是我的程序代碼:

import os, datetime, zipfile

def showProgramInformation():
    print " "
    print "#######################################################"
    print "Python Log-Packer.py  Ver. 1.4"
    print "Search for files, separate the .log fils, compress them" 
    print "and delete the origin file"
    print "log-File = Files with '.log' in name" 
    print "#######################################################"
    print " "

def conversationWithUser(talk):
    print talk
    return raw_input()

def doesPathExists(path):
    if os.path.exists(path):
        return True
    return False   

def isFileALogFile(filePath):
    if filePath.find(".log") != -1:
        return True
    return False

def formatSeveralDateTime(dateTime):
    return datetime.datetime.fromtimestamp(dateTime).strftime('%Y-%m-%d')

def isFileInDateRange(filePath, startDate, endDate):
    fileDate = formatSeveralDateTime(os.path.getmtime(filePath))
    if  fileDate >= startDate and fileDate <= endDate:
        return True
    return False

def zipLogFile(zipFilePath, zipArchivContent):
    myzip = zipfile.ZipFile(zipFilePath + '.zip', 'w', zipfile.ZIP_DEFLATED)
    myzip.write(zipArchivContent)

def isValidDate(dateToBeChecked):
    if len(dateToBeChecked) != 10:
        return False
    try:
        datetime.datetime.strptime(dateToBeChecked, '%Y-%m-%d')
        return True
    except ValueError:
        return False  

def repeatUserInputUntilValidInput(aString):
    userInsert = False
    while userInsert == False:
        newString = aString.upper()
        if  newString == "Y":
            userInsert = True
            return True
        elif newString == "N":
            userInsert = True
            return False
        else:
            print errorMessage
            aString = conversationWithUser("Please insert 'Y' or 'N'!")

def pathNameLongerThan0(path):
    if len(path) > 0:
        print "Path does not exist. Please try it again!"

############## here starts main Program ##############
showProgramInformation()
checkIfInofsAreOk = "N"
errorMessage = "Your input is invalid. Please try  again!"


while repeatUserInputUntilValidInput(checkIfInofsAreOk) == False:
    logFolder = ""
    logArchivFolder = ""
    validLogFiles = []

    while not doesPathExists(logFolder):
        pathNameLongerThan0(logFolder)
        logFolder = conversationWithUser("Please enter a  valid path: ")


    userWanntDateRange = conversationWithUser("Do you want to define a Date Range?  (Y/N): ")
    if repeatUserInputUntilValidInput(userWanntDateRange):
        dateRangeIsOk = False
        beginDateIsOk = False
        endDateIsOK = False
        while not dateRangeIsOk:
            while not beginDateIsOk:
                userStartDate = conversationWithUser("Please enter the beginning date (e.g.  2014-05-23): ")
                beginDateIsOk = isValidDate(userStartDate)
                if beginDateIsOk == False:
                    print errorMessage
            while not endDateIsOK:
                userEndDate = conversationWithUser("Please enter the ending date (e.g.  2014-11-03): ")
                endDateIsOK = isValidDate(userEndDate)
                if endDateIsOK == False:
                    print errorMessage
            if userStartDate <= userEndDate:
                dateRangeIsOk = True
            else:
               print errorMessage + " \nDate out of Range. Begin again!"
               beginDateIsOk = False
               endDateIsOK = False
    else:
        userStartDate = '1900-01-01' # set as default a wide date to make all files
        userEndDate = '2090-01-01'  # set as default a wide date to make all files


    userWanntALogArchivFolder = conversationWithUser("Do you want create a new folder or archive the files in another folder?  (Y/N): ")
    if repeatUserInputUntilValidInput(userWanntALogArchivFolder):
        userWanntToCreatANewFolder = conversationWithUser("Do you want to create a new folder?  (Y/N): ")
        if repeatUserInputUntilValidInput(userWanntToCreatANewFolder): 
            logArchivFolder = conversationWithUser("Enter a new fullpath folder please:")
            pathIsAbsolut = os.path.isabs(logArchivFolder)
            while pathIsAbsolut == False:
                print errorMessage 
                logArchivFolder = conversationWithUser("Enter a new fullpath folder please:")
                pathIsAbsolut = os.path.isabs(logArchivFolder)    
        else: 
            logArchivFolder = conversationWithUser("Enter the fullpath folder please:")
            while not doesPathExists(logArchivFolder):
                pathNameLongerThan0(logArchivFolder)
                logArchivFolder = conversationWithUser("Please enter a  valid path: ")              
    else:
        logArchivFolder = logFolder + "/" + logArchivFolder


    print "#######################################################"
    print "Informations "
    print "Logfolder:      " + logFolder
    print "Stardate:       " + userStartDate
    print "Enddate:        " + userEndDate
    print "Destination:    " + logArchivFolder
    print "#######################################################"
    checkIfInofsAreOk = conversationWithUser("Are those informations correct? (Y/N): ")
    print "#######################################################"   

############ here starts compress process ############        
for logFolder, subFolders, files in os.walk(logFolder):
    print "#######################################################"
    for file in files:
        absoluteLogFilePath = logFolder + '/' + file
        if isFileALogFile(file) and isFileInDateRange(filePath=absoluteLogFilePath, startDate=userStartDate, endDate=userEndDate):
            validLogFiles.append(absoluteLogFilePath)
userFolderPath = logFolder

if len(validLogFiles) > 0:
    if len(logArchivFolder) > 0:
        if not doesPathExists(logArchivFolder):
            os.mkdir(logArchivFolder)    
        userFolderPath = logArchivFolder

    for logFile in validLogFiles:
        zipFilePath = userFolderPath + '/' + os.path.basename(logFile)
        zipLogFile(zipFilePath, logFile)
        print logFile
        os.remove(logFile)
print "#######################################################"        
print "finish"
print "#######################################################"
quit()

如果他們能幫助我,那就太好了。 (對不起,如果我的英語不太好)

敬上

約翰尼斯

日志記錄模塊定義了實現用於應用程序和庫的靈活事件日志記錄系統的函數和類。

FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logger = logging.getLogger('tcpserver')
logger.warning('Protocol problem: %s', 'connection reset', extra=d)

將打印類似

2006-02-08 22:20:02,165 192.168.0.1 fbloggs  Protocol problem: connection reset

您可以使用Formatter定義自己的輸出格式,並使用不同的LogRecord屬性將記錄中的數據合並到格式字符串中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM