Skip to content

Commit

Permalink
Add support for logging to windows NTEventLog
Browse files Browse the repository at this point in the history
  • Loading branch information
WojtekMs committed Feb 5, 2024
1 parent 4a05559 commit b7d122b
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 29 deletions.
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ dependencies = [
"py-moneyed",
"openpyxl",
"semver",
"importlib-resources"
"importlib-resources",
"pywin32"
]

[project.optional-dependencies] # Optional
Expand Down
18 changes: 8 additions & 10 deletions src/banker/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,24 @@
def configure_logging():
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)
log_formatter = logging.Formatter(fmt="[{asctime}][{name}][{funcName}][{levelname}] {message}", style='{')
log_formatter = logging.Formatter(fmt="[{asctime}][T:{thread}][{name}][{funcName}][{levelname}] {message}", style='{')
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)
console_handler.setFormatter(log_formatter)
root_logger.addHandler(console_handler)
syslog_identifier = "matusiak_dev_banker"
app_identifier = "matusiak_dev_banker"
if os.name == "posix":
syslog_handler = logging.handlers.SysLogHandler(address="/dev/log")
syslog_handler.setLevel(logging.DEBUG)
syslog_handler.setFormatter(log_formatter)
syslog_handler.ident = f"{syslog_identifier}: "
syslog_handler.ident = f"{app_identifier}: "
root_logger.addHandler(syslog_handler)
elif os.name == "nt":
date_format = datetime.today().strftime("%Y_%m_%d")
log_file_path = os.path.join(os.getenv('LOCALAPPDATA'), "Matusiak.dev", "Banker", f"Banker_{date_format}.log")
os.makedirs(log_file_path, exist_ok=True)
file_handler = logging.FileHandler(log_file_path)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(log_formatter)
root_logger.addHandler(file_handler)
nt_event_handler = logging.handlers.NTEventLogHandler(appname=app_identifier)
nt_event_handler.setLevel(logging.DEBUG)
nt_event_handler.setFormatter(log_formatter)
root_logger.addHandler(nt_event_handler)
root_logger.info("Logging configured")


def main():
Expand Down
19 changes: 4 additions & 15 deletions src/banker/common/filesystem.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,8 @@
from banker.data.category import Category
from banker.data.transaction import Transaction
from banker.parser.interfaces.categories_parser import ICategoriesParser
from banker.parser.interfaces.transactions_parser import ITransactionsParser


def get_parsed_categories(categories_parser: ICategoriesParser, categories_filepath: str) -> list[Category]:
with open(categories_filepath, "r") as file:
return categories_parser.parse_categories(file.read())


def get_parsed_transactions(transactions_parser: ITransactionsParser, transactions_filepath: str) -> list[Transaction]:
with open(transactions_filepath, "r") as transactions_file:
return transactions_parser.parse_transactions(transactions_file.read())
def read_file(filepath: str) -> str:
with open(filepath, "r", encoding="utf-8") as file:
return file.read()


def save_to_file(filepath: str, content: str):
with open(filepath, "w") as file:
with open(filepath, "w", encoding="utf-8") as file:
file.write(content)
6 changes: 3 additions & 3 deletions src/banker/executor/executor.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os

from banker.analyzer.analyze import deduce_month_year, analyze_transactions
from banker.common.filesystem import get_parsed_categories, get_parsed_transactions, save_to_file
from banker.common.filesystem import save_to_file, read_file
from banker.formatter.interfaces.transactions_formatter import ITransactionsFormatter
from banker.formatter.month_year_formatter import format_month_year
from banker.parser.interfaces.categories_parser import ICategoriesParser
Expand All @@ -22,9 +22,9 @@ def execute(self, transactions_filepath: str, categories_filepath: str, output_d
output_unmatched_transactions_filepath = os.path.join(output_directory, "unmatched_transactions.html")
output_matched_categories_filepath = os.path.join(output_directory, "autogen_budget.xlsx")

all_transactions = get_parsed_transactions(self.__transactions_parser, transactions_filepath)
all_transactions = self.__transactions_parser.parse_transactions(read_file(transactions_filepath))
month_year = deduce_month_year(all_transactions)
supported_categories = get_parsed_categories(self.__categories_parser, categories_filepath)
supported_categories = self.__categories_parser.parse_categories(read_file(categories_filepath))
analyze_result = analyze_transactions(all_transactions, supported_categories)
formatted_transactions = self.__transactions_formatter.format_transactions(
analyze_result.unmatched_transactions)
Expand Down

0 comments on commit b7d122b

Please sign in to comment.