Skip to content

Commit 5a51a40

Browse files
committed
v1.0.7 global vars now strings
1 parent 770457f commit 5a51a40

File tree

6 files changed

+50
-30
lines changed

6 files changed

+50
-30
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "logging_handler"
3-
version = "1.0.6"
3+
version = "1.0.7"
44
description = "Python Library to quickly create logging handlers"
55
authors = [{name = "Thomas Dunteman", email= "[email protected]"}]
66
keywords = ["logging", "syslog"]

release_notes/1.0.1.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Initial release! See the README.md for usage inforamtion. This package is also available on PyPi (logging_handler).

release_notes/1.0.2.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Moved console level to the 1st parameter. Make it quicker and easier to create a console logger
2+
Chaned default console level to INFO from WARNING. This is what I typically end up using anyway
3+
Updated the home page to our new logging_handler page: https://www.learningtopi.com/python-modules-applications/python_logging_handler/
4+
Allow passing static values DEBUG, INFO, WARNING, ERROR and CRITICAL from the logging module (or you may import from this library)

release_notes/1.0.3.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed logging when using a constant imported from the logging library. i.e.: create_logger(DEBUG)

release_notes/1.0.7.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## What's New
2+
3+
- Changed log_file_vars parameter default to None
4+
- Cleaned up unused imports
5+
6+
## Fixed Issues
7+
8+
- Switched global variables for DEBUG, INFO, WARNING, ERROR,
9+
- CRITICAL to be strings rather than integers inherited from logger. Fix was made to resolve IDE type errors.
10+
11+
## Known Issues
12+
13+
N/A

src/logging_handler/__init__.py

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,30 @@
2828
from datetime import datetime, timedelta
2929
import pathlib
3030
import os
31-
from functools import singledispatch
32-
33-
__VERSION__ = (1, 0, 2)
34-
35-
DEBUG = logging.DEBUG
36-
INFO = logging.INFO
37-
WARNING = logging.WARNING
38-
ERROR = logging.ERROR
39-
CRITICAL = logging.CRITICAL
40-
41-
_log_level_name = {
42-
'DEBUG': DEBUG,
43-
"INFO": INFO,
44-
"WARNING": WARNING,
45-
"ERROR": ERROR,
46-
"CRITICAL": CRITICAL
47-
}
4831

49-
_supported_log_levels = [DEBUG, INFO, WARNING, ERROR, CRITICAL]
32+
__VERSION__ = (1, 0, 7)
33+
34+
DEFAULT_LEVEL = logging.WARNING
35+
36+
DEBUG = 'DEBUG'
37+
INFO = 'INFO'
38+
WARNING = 'WARNING'
39+
ERROR = 'ERROR'
40+
CRITICAL = 'CRITICAL'
41+
42+
_log_level_number = {
43+
'DEBUG': logging.DEBUG,
44+
"INFO": logging.INFO,
45+
"WARNING": logging.WARNING,
46+
"ERROR": logging.ERROR,
47+
"CRITICAL": logging.CRITICAL
48+
}
5049

5150

5251
def create_logger(console_level=WARNING, log_file='', file_level=WARNING, name='', file_mode='a', console=True,
53-
syslog=False, syslog_script_name='', log_file_vars=[], log_file_retention_days=0, propagate=False):
52+
syslog=False, syslog_script_name='', log_file_vars=None, log_file_retention_days=0, propagate=False):
5453
""" Creates a logger and returns the handle.
55-
Log file vars should be sent as a dict -> {"var": "{date}", "set": "%Y-%m-%d-%Y-%M"}
54+
Log file vars should be sent as a list of dict -> [{"var": "{date}", "set": "%Y-%m-%d-%Y-%M"}]
5655
5756
Supported log file vars:
5857
{date} - will be replaced with the current date using the provided strftime format
@@ -67,35 +66,37 @@ def create_logger(console_level=WARNING, log_file='', file_level=WARNING, name='
6766
# Console
6867
if console:
6968
console_handler = logging.StreamHandler()
70-
console_handler.setLevel(_log_level_name.get(console_level.upper(), logging.INFO) if not isinstance(console_level, int) else console_level)
69+
console_handler.setLevel(console_level if isinstance(console_level, int) else _log_level_number.get(str(console_level).upper(), DEFAULT_LEVEL))
7170
console_handler.setFormatter(formatter)
7271
logger.addHandler(console_handler)
7372

7473
# syslog
7574
if syslog:
7675
syslog_formatter = logging.Formatter(syslog_script_name + '[%(process)d]: %(levelname)s: %(message)s')
7776
syslog_handler = logging.handlers.SysLogHandler(address='/dev/log')
78-
syslog_handler.setLevel(_log_level_name.get(file_level.upper(), logging.WARNING) if not isinstance(file_level, int) else file_level)
77+
syslog_handler.setLevel(file_level if isinstance(file_level, int) else _log_level_number.get(str(file_level).upper(), DEFAULT_LEVEL))
7978
syslog_handler.setFormatter(syslog_formatter)
8079
logger.addHandler(syslog_handler)
8180

8281
# file
8382
if log_file != '':
8483
# replace variables in the log file name
85-
for var in log_file_vars:
86-
if type(var) == dict and 'var' in var and 'set' in var and var['var'] == "{date}":
87-
log_file = log_file.replace(var['var'], datetime.now().strftime(var['set']))
84+
if log_file_vars is not None:
85+
for var in log_file_vars:
86+
if isinstance(var, dict) and 'var' in var and 'set' in var and var['var'] == "{date}":
87+
log_file = log_file.replace(var['var'], datetime.now().strftime(var['set']))
8888
file_handler = logging.FileHandler(log_file, mode=file_mode, encoding='utf-8', delay=False)
89-
file_handler.setLevel(_log_level_name.get(file_level.upper(), logging.WARNING) if not isinstance(file_level, int) else file_level)
89+
file_handler.setLevel(file_level if isinstance(file_level, int) else _log_level_number.get(str(file_level).upper(), DEFAULT_LEVEL))
9090
file_handler.setFormatter(formatter)
9191
logger.addHandler(file_handler)
9292

9393
# manage retention
9494
if log_file_retention_days > 0:
9595
# replace variables with a *
9696
log_file_search_name = log_file
97-
for var in log_file_vars:
98-
log_file_search_name.replace(var['var'], '*')
97+
if log_file_vars is not None:
98+
for var in log_file_vars:
99+
log_file_search_name.replace(var['var'], '*')
99100
old_log_files = glob(log_file_search_name)
100101
for old_log_file in old_log_files:
101102
# check the age and delete if needed
@@ -106,4 +107,4 @@ def create_logger(console_level=WARNING, log_file='', file_level=WARNING, name='
106107
os.remove(old_log_file)
107108

108109
# return the logger
109-
return logger
110+
return logger

0 commit comments

Comments
 (0)