Впервые я использую Python-модуль 'logging', и в настоящее время я пытаюсь сгенерировать некоторый пример файла журнала с помощью logging.basicConfig () ".Моим основным мотивом является создание примера файла журнала с датой в его имени, "dd-mm-YY_.log".Проведя некоторые начальные исследования, я обнаружил, что мы можем использовать «TimedRotatingFileHandler» для выполнения этой работы.Ниже приведен пример кода из одного сообщения Stackoverflow
from logging.handlers import TimedRotatingFileHandler
fh = TimedRotatingFileHandler('mylogfile', when='midnight')
fh.suffix = '%Y_%m_%d.log'
Но я не могу разобрать, как мне поступить с использованием «format» и «level» из «logging.basicConfig» в TimedRotatingFileHandler() function.
Ниже приведен весь код Python, который я написал:
import logging
from logging.handlers import TimedRotatingFileHandler
log = logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', filename='log.txt', level=logging.INFO)
try:
var = TimedRotatingFileHandler(log, when='midnight')
var.suffix = '%y_%m_$d.log'
except Exception as e:
print("expected str")
logging.exception(e)
print(" ")
print("This is a Logging demo")
print(" ")
logging.info("new request came")
print(" ")
try:
x = int(input("Enter the first number: "))
y = int(input("Enter the second number: "))
print(x / y)
except ZeroDivisionError as msg:
print("cannot divide with zero")
logging.exception(msg)
print(" ")
except ValueError as msg:
print("enter only integer value")
logging.exception(msg)
print(" ")
logging.info("executed successfully")
В вышеприведенном коде все работало правильно, пока я не захотел ввести в программу «TimedRotatingFileHandler».
Ниже приведена ошибка, которую я получаю в моем log.txt
2019-03-25 14:14:00,528:ERROR:expected str, bytes or os.PathLike object, not NoneType
Traceback (most recent call last):
File "/Users/amitesh/PycharmProjects/Automation/Databases/DB_Conn.py", line 17, in <module>
var = TimedRotatingFileHandler(log, when='midnight')
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/logging/handlers.py", line 202, in __init__
BaseRotatingHandler.__init__(self, filename, 'a', encoding, delay)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/logging/handlers.py", line 57, in __init__
logging.FileHandler.__init__(self, filename, mode, encoding, delay)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/logging/__init__.py", line 1019, in __init__
filename = os.fspath(filename)
TypeError: expected str, bytes or os.PathLike object, not NoneType
2019-03-25 14:14:00,530:INFO:new request came
Из вышеприведенной ошибки совершенно ясно, что я не могу правильно разместить логику на месте.
Новая структура журналов
executed successfully
new request came
executed successfully
new request came
invalid literal for int() with base 10: ''
Traceback (most recent call last):
File "/Users/amitesh/PycharmProjects/Automation/Databases/DB_Conn.py", line 61, in <module>
y = int(input("Enter the second number: "))
ValueError: invalid literal for int() with base 10: ''
executed successfully
new request came
new request came
division by zero
Traceback (most recent call last):
File "/Users/amitesh/PycharmProjects/Automation/Databases/DB_Conn.py", line 62, in <module>
print(x / y)
ZeroDivisionError: division by zero
executed successfully
new request came
invalid literal for int() with base 10: 'er'
Traceback (most recent call last):
File "/Users/amitesh/PycharmProjects/Automation/Databases/DB_Conn.py", line 61, in <module>
y = int(input("Enter the second number: "))
ValueError: invalid literal for int() with base 10: 'er'
executed successfully
new request came
executed successfully
new request came
Пожалуйста, предложите.Спасибо.