Код: Выделить всё
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(message)s",
datefmt="%Y%m%d %H:%M:%S",
handlers=[
logging.FileHandler(args.log_file),
logging.StreamHandler()
]
)
logger = logging.getLogger()
Path(args.log_file).chmod(0o644)
logger.info("this_is_a_test")
Код: Выделить всё
-rw-r--r-- 1 root root 0 Nov 30 12:50 /u/qiang/logs/mytest/01_test_with_simulator/001_TestWithSimulator.test_happy_path/simulator.log
Обновление 1:
пробовал очистить существующие обработчики перед добавлением новых, но это не имело никакого значения. Файл журнала по-прежнему пуст.
Код: Выделить всё
logger = logging.getLogger()
if logger.hasHandlers():
logger.handlers.clear()
handlers = [logging.FileHandler(args.log_file), logging.StreamHandler()]
for handler in handlers:
handler.setFormatter(logging.Formatter(fmt="%(asctime)s %(message)s"))
logger.addHandler(handler)
logger.setLevel(logging.INFO)
Path(args.log_file).chmod(0o644)
Код: Выделить всё
class SimulatorRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
logger.info(f"request path is {self.path}")
...
def do_GET(self):
logger.info(f"request path is {self.path}")
...
if __name__ == "__main__":
parser.add_argument("--log-file", help="Simulator log file")
args = parser.parse_args()
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(message)s",
# If this keyword argument is specified as true, any existing handlers
# attached to the root logger are removed and closed, before carrying
# out the configuration as specified by the other arguments.
force=True,
handlers=[
logging.FileHandler(args.log_file),
logging.StreamHandler(sys.stdout)
]
)
logger = logging.getLogger()
Path(args.log_file).chmod(0o644)
Обновление 2: оказывается, что проблема была вызвана библиотекой Python компании, которая переопределяет исходный метод addHandler.
Код: Выделить всё
def addHandler(self, hdlr, add_parent=True):
if (not isinstance(hdlr, (StreamHandler, FileHandler, logging.NullHandler, RotatingFileHandler, SysLogHandler))):
return
...
Извините, ребята. Чувствуете вину за то, что тратите свое время на проблему, вызванную кодом компании, а не стандартным пакетом ведения журналов.
Этот вопрос можно закрыть.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ways-empty
Мобильная версия