Python Forum
How to move a class to a custom module?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to move a class to a custom module?
#5
Thank you @deanhystad for your helpful reply. Following your suggestion I was able to figure out how I could do this.

Contents of module log_format.py
    import logging
    import datetime as dt
    
    
    class Formatter(logging.Formatter):
        converter=dt.datetime.fromtimestamp
        def formatTime(self, record, datefmt=None):
            ct = self.converter(record.created)
            if datefmt:
                s = ct.strftime(datefmt)
            else:
                t = ct.strftime("%Y-%m-%d %H:%M:%S")
                s = "%s,%03d" % (t, record.msecs)
            return s
    
    
    class ContextFilter(logging.Filter): # RUN 2
        def __init__(self, i):           # RUN 2
            self.i = i                   # RUN 2
                                         # RUN 2
        def filter(self, record):        # RUN 2
            self.i += 1                  # NEW LINE
            record.log_count = self.i    # RUN 2
            return True                  # RUN 2
Contents of python script log_format_test.py
    import os
    import sys
    import logging
    
    py_lib = os.environ.get('app_dir') + "/lib"
    sys.path.append(py_lib)
    
    import log_format as lf
    
    
    logger = logging.getLogger(__name__)
    l_level = 'INFO' #'DEBUG' #'INFO'
    l_level = eval("logging." + l_level.upper())
    logger.setLevel(l_level)
    
    int_var = os.getpid()
    i = 0
    str_var = os.path.basename(__file__)
    
    handler = logging.StreamHandler()
    handler.setLevel(l_level)
    lf_format = f'ZZZZZZZZ|%(asctime)s|{int_var}|%(log_count)s|{str_var}|%(message)s'
    formatter = lf.Formatter(fmt=lf_format, datefmt='%Y-%m-%d %H:%M:%S.%f') # 2022-02-22 16:42:44.289193
    
    obj_filter = lf.ContextFilter(i)                    # NEW LINE
    logger.addFilter(lf.ContextFilter(obj_filter)) # CHANGED LINE
    
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    
    logger.info("I am INFO 1")
    logger.info("I am INFO 2")
    logger.debug("I am DEBUG 3")
This results in printing the log as expected and I don't even have to manually increment i every time.

    ZZZZZZZZ|2022-02-24 11:41:19.578733|20527|1|log_format_test.py|I am INFO 1
    ZZZZZZZZ|2022-02-24 11:41:19.578868|20527|2|log_format_test.py|I am INFO 2
Reply


Messages In This Thread
RE: How to move a class to a custom module? - by python300 - Mar-08-2022, 09:19 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  How to read module/class from list of strings? popular_dog 1 486 Oct-04-2023, 03:08 PM
Last Post: deanhystad
  My code displays too much output when importing class from a module lil_e 4 1,170 Oct-22-2022, 12:56 AM
Last Post: Larz60+
  Error when refering to class defined in 'main' in an imported module HeRo 2 2,420 Apr-13-2021, 07:22 PM
Last Post: HeRo
  Custom file class deanhystad 11 4,422 Feb-01-2021, 05:09 PM
Last Post: nilamo
  importing same python library in multiple custom module escape_freedom13 6 3,846 May-10-2020, 07:01 PM
Last Post: escape_freedom13
  How to serialize custom class objects in JSON? Exsul1 4 3,514 Sep-23-2019, 08:27 AM
Last Post: wavic
  How can I save a class as a module sakawaka 2 4,969 Feb-07-2018, 03:01 PM
Last Post: Larz60+

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020