Source code for tborg.__init__
# -*- coding: utf-8 -*-
#
# tborg/__init__.py
#
"""
The ConfigLogger class is used to configure loggers.
by Carl J. Nobile
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""
import os
import logging
from .tborg import ThunderBorg, ThunderBorgException
__all__ = ['create_working_dir', 'ConfigLogger', 'ThunderBorg',
'ThunderBorgException']
# Some file locations, but can only be imported after create_working_dir()
# is run.
BORG_CUBE = None
LOG_PATH = None
RUN_PATH = None
MEDIA_PATH = None
[docs]
def create_working_dir(): # pragma: no cover
"""
This function creates a `borg_cube` directory containing a `logs`
`run`, and `media` directories.
1. The `logs` directory contains all logs.
2. The `run` directory contains all daemon pid/lock files.
"""
global BORG_CUBE
global LOG_PATH
global RUN_PATH
global MEDIA_PATH
home = os.path.expanduser('~')
borg_cube = os.path.join(home, 'borg_cube')
logs = os.path.join(borg_cube, 'logs')
run = os.path.join(borg_cube, 'run')
media = os.path.join(borg_cube, 'media')
if not os.path.exists(logs):
os.makedirs(logs, mode=0o777)
if not os.path.exists(run):
os.makedirs(run, mode=0o777)
if not os.path.exists(media):
os.makedirs(media, mode=0o777)
BORG_CUBE = borg_cube
LOG_PATH = logs
RUN_PATH = run
MEDIA_PATH = media
[docs]
class ConfigLogger:
"""
Setup some basic logging.
"""
_DEFAULT_FORMAT = ("%(asctime)s %(levelname)s %(name)s %(funcName)s "
"[line:%(lineno)d] %(message)s")
def __init__(self, format: str=None) -> None:
"""
Constructor sets up the formatting for logging.
:param str format: Defines the format of the logging message.
"""
self._format = format if format else self._DEFAULT_FORMAT
[docs]
def config(self, logger_name: str=None, file_path: str=None,
level: int=logging.WARNING) -> None:
"""
Config the logger.
:param str logger_name: The name of the logger.
:param str file_path: The full path with the file name.
:param int level: The logging level.
"""
if logger_name and file_path:
logger = logging.getLogger(logger_name)
logger.handlers.clear()
handler = logging.FileHandler(file_path)
handler.setLevel(level)
formatter = logging.Formatter(self._format)
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(level)
logger.propagate = False
else: # pragma: no cover
logging.basicConfig(filename=file_path, format=self._format,
level=level, force=True)