mercredi 9 mars 2011

News logging Class

I have added methode to copy object on an other object .
You can use it like this :


class Toto: 
       def __init__(self,log):
              self.log = copy.deepcopy(log)
              self.log.setClassname2Log("[Properties]")
              self.log.print(self.log.DEBUG,"_init__")


new code:


import time

import copy

import pickle



class Logging:

    ERROR = 3

    WARNING = 2

    INFO = 1

    DEBUG = 0

    LEVEL = ['DEBUG  ', 'INFO   ', 'WARNING', 'ERROR  ']

    VALUELEVEL = "DEBUG = 0, INFO = 1, WARNING = 2, ERROR = 3"

    class2log =""

    

    filename = "none"

    bprint2screen = 0

    bprint2file = 1

    level = 3



    def __init__(self, filename = "none", levelbyDefault = 3):

        self.level = levelbyDefault

        if filename == "none":

            self.bprint2file = 0

            self.bprint2screen = 1

        else:

            if 1 >= self.level:

                self.filename = filename

                file = open(self.filename,'w')

                file.write('[' + time.asctime() + '][' + self.LEVEL[level] + ']' + self.class2log +'-------------------------------------------------------------------------------\n')

                file.write('[' + time.asctime() + '][' + self.LEVEL[level] + ']' + self.class2log + '-')

                file.write('Create Object loggin\n')

                file.close()



    #Permet la copie de l'objet

    #    - Avec reférence (pointeur sur l'objet)

    def __copy__(self):

        return self.__class__(self)

    #    - Sans reférence (vrai copie en mémoire)

    def __deepcopy__(self, memo={}):

        from copy import deepcopy

        result = self.__class__()

        result.setPrint2Screen(self.bprint2screen)

        result.setPrint2File(self.bprint2file)

        result.setLevel(self.level)

        result.setFileName(self.filename)

        result.setClassname2Log(self.class2log)

        return result



        

    def print(self,level, string):

        if int(level) >= int(self.level):

            if self.bprint2file == 1:

                file = open(self.filename,'a')

                file.write('[' + time.asctime() + '][' + self.LEVEL[level] +']' + self.class2log + ' - ') 

                file.write(string + '\n')

                file.close()

            if self.bprint2screen == 1:

                print '[' + time.asctime() + '][' + self.LEVEL[level] + ']' + self.class2log +' - ' + string

    

    def setPrint2Screen(self,bprint2screen):

        self.bprint2screen = bprint2screen

    

    def setPrint2File(self,bprint2file):

        self.bprint2file = bprint2file

        

    def setLevel(self,level):

        self.level = level

        

    def setClassname2Log(self,className):

        self.class2log = className

        

    def setFileName(self,filename):

        if filename != "none":

            self.filename = filename

            self.bprint2file = 1

            self.bprint2screen = 0

        



# -----------------------------------------

Aucun commentaire:

Enregistrer un commentaire