Remove old logger

This commit is contained in:
Labrys of Knossos 2022-12-16 19:34:29 -05:00
commit e78006c905
43 changed files with 2 additions and 362 deletions

View file

@ -3,7 +3,7 @@ import os
import sys import sys
import nzb2media import nzb2media
from nzb2media import logger, main_db from nzb2media import main_db
from nzb2media.auto_process import comics, games, movies, music, tv, books from nzb2media.auto_process import comics, games, movies, music, tv, books
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.plugins.plex import plex_update from nzb2media.plugins.plex import plex_update

View file

@ -43,7 +43,6 @@ CONFIG_TV_FILE = APP_ROOT / 'autoProcessTv.cfg'
TEST_FILE = APP_ROOT / 'tests' / 'test.mp4' TEST_FILE = APP_ROOT / 'tests' / 'test.mp4'
MYAPP = None MYAPP = None
from nzb2media import logger
from nzb2media import main_db from nzb2media import main_db
from nzb2media import version_check from nzb2media import version_check
from nzb2media import databases from nzb2media import databases

View file

@ -3,7 +3,6 @@ from __future__ import annotations
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.utils.common import flatten from nzb2media.utils.common import flatten
from nzb2media.utils.encoding import convert_to_ascii from nzb2media.utils.encoding import convert_to_ascii

View file

@ -5,7 +5,6 @@ import os
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.utils.common import flatten from nzb2media.utils.common import flatten
from nzb2media.utils.encoding import convert_to_ascii from nzb2media.utils.encoding import convert_to_ascii

View file

@ -4,8 +4,6 @@ import typing
import requests import requests
from nzb2media import logger
class ProcessResult(typing.NamedTuple): class ProcessResult(typing.NamedTuple):
status_code: int status_code: int

View file

@ -6,7 +6,6 @@ import shutil
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.utils.common import flatten from nzb2media.utils.common import flatten
from nzb2media.utils.encoding import convert_to_ascii from nzb2media.utils.encoding import convert_to_ascii

View file

@ -7,7 +7,6 @@ import time
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media import transcoder from nzb2media import transcoder
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.auto_process.common import command_complete from nzb2media.auto_process.common import command_complete

View file

@ -7,7 +7,6 @@ import time
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.auto_process.common import command_complete from nzb2media.auto_process.common import command_complete
from nzb2media.scene_exceptions import process_all_exceptions from nzb2media.scene_exceptions import process_all_exceptions

View file

@ -11,7 +11,6 @@ from oauthlib.oauth2 import LegacyApplicationClient
from requests_oauthlib import OAuth2Session from requests_oauthlib import OAuth2Session
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media import transcoder from nzb2media import transcoder
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.auto_process.common import command_complete from nzb2media.auto_process.common import command_complete

View file

@ -8,7 +8,6 @@ from itertools import chain
import configobj import configobj
import nzb2media import nzb2media
from nzb2media import logger
class Section(configobj.Section): class Section(configobj.Section):

View file

@ -1,6 +1,5 @@
from __future__ import annotations from __future__ import annotations
from nzb2media import logger
from nzb2media import main_db from nzb2media import main_db
from nzb2media.utils.files import backup_versioned_file from nzb2media.utils.files import backup_versioned_file

View file

@ -1,319 +0,0 @@
from __future__ import annotations
import functools
import logging
import os
import sys
import threading
import nzb2media
# number of log files to keep
NUM_LOGS = 3
# log size in bytes
LOG_SIZE = 10000000 # 10 megs
ERROR = logging.ERROR
WARNING = logging.WARNING
MESSAGE = logging.INFO
DEBUG = logging.DEBUG
POSTPROCESS = 21
DB = 5
reverseNames = {
'ERROR': ERROR,
'WARNING': WARNING,
'INFO': MESSAGE,
'DEBUG': DEBUG,
'POSTPROCESS': POSTPROCESS,
'DB': DB,
}
class NTMRotatingLogHandler:
def __init__(self, log_file, num_files, num_bytes):
self.num_files = num_files
self.num_bytes = num_bytes
self.log_file = log_file
self.log_file_path = log_file
self.cur_handler = None
self.writes_since_check = 0
self.console_logging = True
self.log_lock = threading.Lock()
def close_log(self, handler=None):
if not handler:
handler = self.cur_handler
if handler:
ntm_logger = logging.getLogger('nzbtomedia')
pp_logger = logging.getLogger('postprocess')
db_logger = logging.getLogger('db')
ntm_logger.removeHandler(handler)
pp_logger.removeHandler(handler)
db_logger.removeHandler(handler)
handler.flush()
handler.close()
def init_logging(self, console_logging=True):
if console_logging:
self.console_logging = console_logging
old_handler = None
# get old handler in case we want to close it
if self.cur_handler:
old_handler = self.cur_handler
else:
# Add a new logging levels
logging.addLevelName(21, 'POSTPROCESS')
logging.addLevelName(5, 'DB')
# only start consoleLogging on first initialize
if self.console_logging:
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
# log-level
console.setLevel(DB)
# set a format which is simpler for console use
console.setFormatter(
DispatchingFormatter(
{
'nzbtomedia': logging.Formatter(
'[%(asctime)s] [%(levelname)s]::%(message)s',
'%H:%M:%S',
),
'postprocess': logging.Formatter(
'[%(asctime)s] [%(levelname)s]::%(message)s',
'%H:%M:%S',
),
'db': logging.Formatter(
'[%(asctime)s] [%(levelname)s]::%(message)s',
'%H:%M:%S',
),
},
logging.Formatter('%(message)s'),
),
)
# add the handler to the root logger
logging.getLogger('nzbtomedia').addHandler(console)
logging.getLogger('postprocess').addHandler(console)
logging.getLogger('db').addHandler(console)
self.log_file_path = os.path.join(nzb2media.LOG_DIR, self.log_file)
self.cur_handler = self._config_handler()
logging.getLogger('nzbtomedia').addHandler(self.cur_handler)
logging.getLogger('postprocess').addHandler(self.cur_handler)
logging.getLogger('db').addHandler(self.cur_handler)
logging.getLogger('nzbtomedia').setLevel(logging.DEBUG)
logging.getLogger('postprocess').setLevel(POSTPROCESS)
logging.getLogger('db').setLevel(DB)
# already logging in new log folder, close the old handler
if old_handler:
self.close_log(old_handler)
def _config_handler(self):
"""Configure a file handler to log at file_name and return it."""
file_handler = logging.FileHandler(
self.log_file_path, encoding='utf-8',
)
file_handler.setLevel(DB)
file_handler.setFormatter(
DispatchingFormatter(
{
'nzbtomedia': logging.Formatter(
'%(asctime)s %(levelname)-8s::%(message)s',
'%Y-%m-%d %H:%M:%S',
),
'postprocess': logging.Formatter(
'%(asctime)s %(levelname)-8s::%(message)s',
'%Y-%m-%d %H:%M:%S',
),
'db': logging.Formatter(
'%(asctime)s %(levelname)-8s::%(message)s',
'%Y-%m-%d %H:%M:%S',
),
},
logging.Formatter('%(message)s'),
),
)
return file_handler
def _log_file_name(self, i):
"""
Return a numbered log file name depending on i.
If i==0 it just uses logName, if not it appends it to the extension
e.g. (blah.log.3 for i == 3)
i: Log number to ues
"""
return self.log_file_path + (f'.{i}' if i else '')
def _num_logs(self):
"""
Scan the log folder and figure out how many log files there are already on disk.
Returns: The number of the last used file (eg. mylog.log.3 would return 3). If there are no logs it returns -1
"""
cur_log = 0
while os.path.isfile(self._log_file_name(cur_log)):
cur_log += 1
return cur_log - 1
def _rotate_logs(self):
ntm_logger = logging.getLogger('nzbtomedia')
pp_logger = logging.getLogger('postprocess')
db_logger = logging.getLogger('db')
# delete the old handler
if self.cur_handler:
self.close_log()
# rename or delete all the old log files
for i in range(self._num_logs(), -1, -1):
cur_file_name = self._log_file_name(i)
try:
if i >= NUM_LOGS:
os.remove(cur_file_name)
else:
os.rename(cur_file_name, self._log_file_name(i + 1))
except OSError:
pass
# the new log handler will always be on the un-numbered .log file
new_file_handler = self._config_handler()
self.cur_handler = new_file_handler
ntm_logger.addHandler(new_file_handler)
pp_logger.addHandler(new_file_handler)
db_logger.addHandler(new_file_handler)
def log(self, to_log, log_level=MESSAGE, section='MAIN'):
with self.log_lock:
# check the size and see if we need to rotate
if self.writes_since_check >= 10:
if (
os.path.isfile(self.log_file_path)
and os.path.getsize(self.log_file_path) >= LOG_SIZE
):
self._rotate_logs()
self.writes_since_check = 0
else:
self.writes_since_check += 1
try:
message = f'{section.upper()}: {to_log}'
except UnicodeError:
message = (
f'{section.upper()}: Message contains non-utf-8 string'
)
out_line = message
ntm_logger = logging.getLogger('nzbtomedia')
pp_logger = logging.getLogger('postprocess')
db_logger = logging.getLogger('db')
pp_logger.postprocess = functools.partial(
pp_logger.log, POSTPROCESS,
)
db_logger.db = functools.partial(db_logger.log, DB)
try:
if log_level == DEBUG:
if nzb2media.LOG_DEBUG == 1:
ntm_logger.debug(out_line)
elif log_level == MESSAGE:
ntm_logger.info(out_line)
elif log_level == WARNING:
ntm_logger.warning(out_line)
elif log_level == ERROR:
ntm_logger.error(out_line)
elif log_level == POSTPROCESS:
pp_logger.postprocess(out_line)
elif log_level == DB:
if nzb2media.LOG_DB == 1:
db_logger.db(out_line)
else:
ntm_logger.info(log_level, out_line)
except ValueError:
pass
def log_error_and_exit(self, error_msg):
log(error_msg, ERROR)
if 'NZBOP_SCRIPTDIR' in os.environ:
sys.exit(nzb2media.NZBGET_POSTPROCESS_ERROR)
elif not self.console_logging:
sys.exit(error_msg.encode(nzb2media.SYS_ENCODING, 'xmlcharrefreplace'))
else:
sys.exit(1)
class DispatchingFormatter:
def __init__(self, formatters, default_formatter):
self._formatters = formatters
self._default_formatter = default_formatter
def format(self, record):
formatter = self._formatters.get(record.name, self._default_formatter)
return formatter.format(record)
ntm_log_instance = NTMRotatingLogHandler(nzb2media.LOG_FILE, NUM_LOGS, LOG_SIZE)
def log(to_log, log_level=MESSAGE, section='MAIN'):
ntm_log_instance.log(to_log, log_level, section)
def info(to_log, section='MAIN'):
log(to_log, MESSAGE, section)
def error(to_log, section='MAIN'):
log(to_log, ERROR, section)
def warning(to_log, section='MAIN'):
log(to_log, WARNING, section)
def debug(to_log, section='MAIN'):
log(to_log, DEBUG, section)
def postprocess(to_log, section='POSTPROCESS'):
log(to_log, POSTPROCESS, section)
def db(to_log, section='DB'):
log(to_log, DB, section)
def log_error_and_exit(error_msg):
ntm_log_instance.log_error_and_exit(error_msg)
def close():
ntm_log_instance.close_log()

View file

@ -5,7 +5,6 @@ import sqlite3
import time import time
import nzb2media import nzb2media
from nzb2media import logger
def db_filename(filename='nzbtomedia.db', suffix=None): def db_filename(filename='nzbtomedia.db', suffix=None):

View file

@ -5,7 +5,6 @@ import time
import requests import requests
import nzb2media.utils.common import nzb2media.utils.common
from nzb2media import logger
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.managers.sickbeard import SickBeard from nzb2media.managers.sickbeard import SickBeard

View file

@ -7,7 +7,6 @@ from oauthlib.oauth2 import LegacyApplicationClient
from requests_oauthlib import OAuth2Session from requests_oauthlib import OAuth2Session
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.utils.paths import remote_dir from nzb2media.utils.paths import remote_dir

View file

@ -3,7 +3,6 @@ from __future__ import annotations
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
def configure_plex(config): def configure_plex(config):

View file

@ -7,7 +7,6 @@ import subliminal
from babelfish import Language from babelfish import Language
import nzb2media import nzb2media
from nzb2media import logger
def import_subs(filename): def import_subs(filename):

View file

@ -3,7 +3,6 @@ from __future__ import annotations
import os import os
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.processor import nzb from nzb2media.processor import nzb
from nzb2media.utils.common import get_dirs from nzb2media.utils.common import get_dirs

View file

@ -3,7 +3,6 @@ from __future__ import annotations
import datetime import datetime
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media import main_db from nzb2media import main_db
from nzb2media.auto_process import books from nzb2media.auto_process import books
from nzb2media.auto_process import comics from nzb2media.auto_process import comics

View file

@ -4,7 +4,6 @@ import os
import sys import sys
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.processor import nzb from nzb2media.processor import nzb

View file

@ -2,7 +2,6 @@ from __future__ import annotations
import os import os
from nzb2media import logger
from nzb2media.processor import nzb from nzb2media.processor import nzb
# Constants # Constants

View file

@ -7,7 +7,6 @@ import shlex
import subprocess import subprocess
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.utils.files import list_media_files from nzb2media.utils.files import list_media_files
reverse_list = [ reverse_list = [

View file

@ -3,7 +3,6 @@ from __future__ import annotations
from deluge_client import DelugeRPCClient from deluge_client import DelugeRPCClient
import nzb2media import nzb2media
from nzb2media import logger
def configure_client(): def configure_client():

View file

@ -3,7 +3,6 @@ from __future__ import annotations
from qbittorrent import Client as qBittorrentClient from qbittorrent import Client as qBittorrentClient
import nzb2media import nzb2media
from nzb2media import logger
def configure_client(): def configure_client():

View file

@ -3,7 +3,6 @@ from __future__ import annotations
from syno.downloadstation import DownloadStation from syno.downloadstation import DownloadStation
import nzb2media import nzb2media
from nzb2media import logger
def configure_client(): def configure_client():

View file

@ -3,7 +3,6 @@ from __future__ import annotations
from transmissionrpc.client import Client as TransmissionClient from transmissionrpc.client import Client as TransmissionClient
import nzb2media import nzb2media
from nzb2media import logger
def configure_client(): def configure_client():

View file

@ -3,7 +3,6 @@ from __future__ import annotations
from utorrent.client import UTorrentClient from utorrent.client import UTorrentClient
import nzb2media import nzb2media
from nzb2media import logger
def configure_client(): def configure_client():

View file

@ -14,7 +14,6 @@ import time
from babelfish import Language from babelfish import Language
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.utils.paths import make_dir from nzb2media.utils.paths import make_dir
__author__ = 'Justin' __author__ = 'Justin'

View file

@ -4,7 +4,7 @@ import os
from subprocess import Popen from subprocess import Popen
import nzb2media import nzb2media
from nzb2media import logger, transcoder from nzb2media import transcoder
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult
from nzb2media.plugins.subtitles import import_subs from nzb2media.plugins.subtitles import import_subs
from nzb2media.utils.files import list_media_files from nzb2media.utils.files import list_media_files

View file

@ -4,7 +4,6 @@ import os.path
import urllib.parse import urllib.parse
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.utils.files import list_media_files from nzb2media.utils.files import list_media_files
from nzb2media.utils.files import move_file from nzb2media.utils.files import move_file
from nzb2media.utils.paths import clean_directory from nzb2media.utils.paths import clean_directory

View file

@ -2,7 +2,6 @@ from __future__ import annotations
import datetime import datetime
from nzb2media import logger
from nzb2media import main_db from nzb2media import main_db
database = main_db.DBConnection() database = main_db.DBConnection()

View file

@ -3,7 +3,6 @@ from __future__ import annotations
import os import os
import nzb2media import nzb2media
from nzb2media import logger
def char_replace(name_in): def char_replace(name_in):

View file

@ -11,7 +11,6 @@ import mediafile
import nzb2media import nzb2media
from nzb2media import extractor from nzb2media import extractor
from nzb2media import logger
from nzb2media.utils.links import copy_link from nzb2media.utils.links import copy_link
from nzb2media.utils.naming import is_sample from nzb2media.utils.naming import is_sample
from nzb2media.utils.naming import sanitize_name from nzb2media.utils.naming import sanitize_name

View file

@ -6,7 +6,6 @@ import re
import guessit import guessit
import requests import requests
from nzb2media import logger
from nzb2media.utils.naming import sanitize_name from nzb2media.utils.naming import sanitize_name

View file

@ -5,7 +5,6 @@ import shutil
import linktastic import linktastic
from nzb2media import logger
from nzb2media.utils.paths import make_dir from nzb2media.utils.paths import make_dir
try: try:

View file

@ -7,7 +7,6 @@ import time
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
def make_wake_on_lan_packet(mac_address): def make_wake_on_lan_packet(mac_address):

View file

@ -5,7 +5,6 @@ import os
import requests import requests
import nzb2media import nzb2media
from nzb2media import logger
def get_nzoid(input_name): def get_nzoid(input_name):

View file

@ -3,7 +3,6 @@ from __future__ import annotations
import os import os
import nzb2media import nzb2media
from nzb2media import logger
def parse_other(args): def parse_other(args):

View file

@ -7,7 +7,6 @@ import stat
from functools import partial from functools import partial
import nzb2media import nzb2media
from nzb2media import logger
def onerror(func, path, exc_info): def onerror(func, path, exc_info):

View file

@ -9,7 +9,6 @@ import typing
import nzb2media import nzb2media
from nzb2media import APP_FILENAME from nzb2media import APP_FILENAME
from nzb2media import SYS_ARGV from nzb2media import SYS_ARGV
from nzb2media import logger
from nzb2media import version_check from nzb2media import version_check
if os.name == 'nt': if os.name == 'nt':

View file

@ -3,7 +3,6 @@ from __future__ import annotations
import time import time
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.torrent import deluge from nzb2media.torrent import deluge
from nzb2media.torrent import qbittorrent from nzb2media.torrent import qbittorrent
from nzb2media.torrent import synology from nzb2media.torrent import synology

View file

@ -14,7 +14,6 @@ from urllib.request import urlretrieve
import nzb2media import nzb2media
from nzb2media import github_api as github from nzb2media import github_api as github
from nzb2media import logger
class CheckVersion: class CheckVersion:

View file

@ -2,7 +2,6 @@ import os
import sys import sys
import nzb2media import nzb2media
from nzb2media import logger
from nzb2media.processor import nzbget, sab, manual from nzb2media.processor import nzbget, sab, manual
from nzb2media.processor.nzb import process from nzb2media.processor.nzb import process
from nzb2media.auto_process.common import ProcessResult from nzb2media.auto_process.common import ProcessResult