Skip to content

Commit 5b65140

Browse files
Improvements.
1 parent 5235b0f commit 5b65140

4 files changed

Lines changed: 32 additions & 10 deletions

File tree

CHANGES-LOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ Help this project by [Donation](DONATE.md)
66
Changes log
77
-----------
88

9+
### 2.4.3
10+
11+
Improvements.
12+
13+
### 2.4.2
14+
15+
Bug Fixes.
16+
917
### 2.4.1
1018

1119
Bug fixes and improvements.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ python setup.py install
5353
Changes
5454
-------
5555

56-
### 2.4.2
56+
### 2.4.3
5757

58-
Bug fixes.
58+
Improvements.
5959

6060
[Full Changes Log](https://github.com/MPCodeWriter21/log21/blob/master/CHANGES-LOG.md)
6161

log21/__init__.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
# CodeWriter21
33

44
import io as _io
5+
import os as _os
56
import logging as _logging
67

7-
from typing import Union as _Union, Dict as _Dict
8+
from typing import Union as _Union, Dict as _Dict, Type as _Type
89

910
import log21.CrashReporter as CrashReporter
1011

@@ -21,7 +22,7 @@
2122
from log21.Formatters import ColorizingFormatter, DecolorizingFormatter
2223
from log21.Colors import Colors, get_color, get_colors, ansi_escape, get_color_name, closest_color
2324

24-
__version__ = "2.4.2"
25+
__version__ = "2.4.3"
2526
__author__ = "CodeWriter21 (Mehrad Pooryoussof)"
2627
__github__ = "Https://GitHub.com/MPCodeWriter21/log21"
2728
__all__ = ['ColorizingStreamHandler', 'DecolorizingFileHandler', 'ColorizingFormatter', 'DecolorizingFormatter',
@@ -39,7 +40,8 @@
3940

4041
def _prepare_formatter(fmt: str = None, style: str = '%', datefmt: str = "%H:%M:%S", show_level: bool = True,
4142
show_time: bool = True, colorize_time_and_level: bool = True,
42-
level_names: _Dict[int, str] = None):
43+
level_names: _Dict[int, str] = None,
44+
formatter_class: _Type[_logging.Formatter] = ColorizingFormatter):
4345
# Prepares a formatting if the fmt was None
4446
if not fmt:
4547
style = '%'
@@ -50,8 +52,10 @@ def _prepare_formatter(fmt: str = None, style: str = '%', datefmt: str = "%H:%M:
5052
fmt = "[%(asctime)s] " + fmt
5153
fmt = '\r' + fmt
5254
# Defines the formatter
53-
formatter = ColorizingFormatter(fmt, datefmt, style=style, level_names=level_names)
54-
if not colorize_time_and_level:
55+
formatter = formatter_class(fmt, datefmt, style=style)
56+
if isinstance(formatter, Formatters._Formatter):
57+
formatter.level_names = level_names
58+
if not colorize_time_and_level and isinstance(formatter, ColorizingFormatter):
5559
for key in formatter.level_colors:
5660
formatter.level_colors[key] = tuple()
5761
formatter.time_color = tuple()
@@ -62,7 +66,8 @@ def _prepare_formatter(fmt: str = None, style: str = '%', datefmt: str = "%H:%M:
6266
def get_logger(name: str = '', level: _Union[int, str] = NOTSET, show_time: bool = True,
6367
show_level: bool = True, colorize_time_and_level: bool = True, fmt: str = None,
6468
datefmt: str = "%H:%M:%S", style: str = '%', handle_carriage_return: bool = True,
65-
handle_new_line: bool = True, override=False, level_names: _Dict[int, str] = None) -> Logger:
69+
handle_new_line: bool = True, override=False, level_names: _Dict[int, str] = None,
70+
file: _Union[_os.PathLike, str] = None) -> Logger:
6671
"""
6772
Returns a logging.Logger with colorizing support.
6873
>>>
@@ -121,6 +126,7 @@ def get_logger(name: str = '', level: _Union[int, str] = NOTSET, show_time: bool
121126
else
122127
:param override: bool = True: Overrides the logger attributes even if it already exists
123128
:param level_names: Dict[int, str] = None: You can specify custom level names.
129+
:param file: Union[os.PathLike, str] = None: The file to log to
124130
:return: log21.Logger
125131
"""
126132
if not isinstance(name, str):
@@ -138,6 +144,14 @@ def get_logger(name: str = '', level: _Union[int, str] = NOTSET, show_time: bool
138144
handler.setFormatter(formatter)
139145
logger.addHandler(handler)
140146
_manager.addLogger(name, logger)
147+
148+
if file:
149+
file_handler = FileHandler.FileHandler(file)
150+
file_formatter = _prepare_formatter(fmt, style, datefmt, show_level, show_time, False, level_names,
151+
formatter_class=Formatters.DecolorizingFormatter)
152+
file_handler.setFormatter(file_formatter)
153+
logger.addHandler(file_handler)
154+
141155
return logger
142156

143157

@@ -257,7 +271,7 @@ def tree_print(obj, indent: int = 4, mode='-', colors: _Dict[str, str] = None, e
257271

258272
def basic_config(force: bool = False, encoding: str = None, errors: str = 'backslashreplace', handlers=None,
259273
stream=None, filename=None, filemode: str = 'a', date_format: str = "%H:%M:%S", style: str = '%',
260-
format_: str = None, level: int = None):
274+
format_: str = None, level: _Union[int, str] = None):
261275
"""
262276
Do basic configuration for the logging system.
263277

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
long_description = file.read()
88

99
DESCRIPTION = 'A simple logging package that helps you log colorized messages in Windows console.'
10-
VERSION = '2.4.2'
10+
VERSION = '2.4.3'
1111

1212
setup(
1313
name='log21',

0 commit comments

Comments
 (0)