-#
-# mem.py
-#
-# Get instantaneous memory statistics (installed, total, free, available)
-#
+"""
+Get instantaneous memory statistics (installed, total, free, available)
+"""
import re
-from ..formatting import *
-from .. import config
-
-import logging
-logger = logging.getLogger(__name__)
-
-def parse_log():
-
- logger.debug("Starting memory section")
- section = Section("memory")
-
- table = Table()
-
- ram_b = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')
- table.add_row(Row([Column("Installed"), Column(parsesize(ram_b))]))
-
- raw_mem = util.readlog(config.prefs['logs']['meminfo'])
- total_regex = re.compile("(MemTotal:\s*| kB)+")
- free_regex = re.compile("MemFree:\s*")
-
- for line in raw_mem.splitlines():
- matches = re.findall("^Mem(\w+):\s*(\d*)\s*kB$", line)
- if len(matches) > 0:
- logger.debug("Detected {0} memory of {1} kB".format(matches[0][0].lower(), matches[0][1]))
- table.add_row(Row([Column(matches[0][0]), Column(parsesize(float(matches[0][1])*1000))]))
-# if "Mem" in line:
-# total = line_regex.sub("", line, 1)
-# processor = proc_regex.sub("", processor)
-# if not processor in proc_data.items:
-# proc_data.items.append(processor)
-# else:
-# logger.debug("Found duplicate entry (perhaps multiple cores?) for {0}".format(processor))
-# if len(proc_data.items) > 0:
-# section.append_data(proc_data)
-# else:
-# logger.warning("Failed to find processor data")
-
- table.align_column(0, "right")
- section.append_table(table)
-
- logger.info("Finished memory section")
- return section
+from logparse.formatting import *
+from logparse import config
+from logparse.load_parsers import Parser
+
+class Mem(Parser):
+
+ def __init__(self):
+ super().__init__()
+ self.name = "mem"
+ self.info = "Get instantaneous memory statistics "
+ "(installed, total, free, available)"
+
+ def parse_log(self):
+
+ logger.debug("Starting memory section")
+ section = Section("memory")
+
+ table = Table()
+
+ ram_b = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')
+ table.add_row(Row([Column("Installed"), Column(parsesize(ram_b))]))
+
+ raw_mem = util.readlog(config.prefs.get("logs", "meminfo"))
+ line_regex = re.compile("^Mem(\w+):\s*(\d*)\s*kB$")
+
+ for line in raw_mem.splitlines():
+
+ matches = line_regex.findall(line)
+
+ if len(matches) > 0:
+ logger.debug("Detected {0} memory of {1} kB".
+ format(matches[0][0].lower(), matches[0][1]))
+ table.add_row(Row([Column(matches[0][0]),
+ Column(parsesize(float(matches[0][1])*1000))]))
+
+ table.align_column(0, "right")
+ section.append_table(table)
+
+ logger.info("Finished memory section")
+ return section