Я поигрался с модулем журналирования и обнаружил некоторые вещи, которые мне не совсем понятны.
Прежде всего, поскольку это большая программа, я хотел, чтобы код был таким, как максимально просто, поэтому я использовал файл конфигурации json.
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"simple": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
},
"extra": {
"format": "%(asctime)-16s %(name)-8s %(filename)-12s %(lineno)-6s %(funcName)-30s %(levelname)-8s %(message)s",
"datefmt": "%m-%d %H:%M:%S"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "simple",
"stream": "ext://sys.stdout"
},
"info_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "simple",
"filename": "info.log",
"maxBytes": 10485760,
"backupCount": 40,
"encoding": "utf8"
},
"error_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "ERROR",
"formatter": "simple",
"filename": "errors.log",
"maxBytes": 10485760,
"backupCount": 40,
"encoding": "utf8"
}
},
"loggers": {
"my_module": {
"level": "ERROR",
"handlers": ["console"],
"propagate": "no"
}
},
"root": {
"level": "INFO",
"handlers": ["console", "info_file_handler", "error_file_handler"]
}
}
Этот файл JSON импортируется и используется. Кажется, работает нормально.
К сожалению, есть некоторые проблемы.
После завершения кода (все еще работающего над ним) регистратор не закрывает файл. И из-за этого при следующем запуске он добавляет новый запуск к старому файлу журнала. Нет возможности без проблем удалить его или truncate().
Поэтому я хотел удалить обработчики записи файлов. К сожалению, похоже, что logger.handlers пуст, и поэтому я не могу их нигде найти. Наверное, есть идея?
Кроме того, с файлами журналов есть серьезная проблема. Регистратор просто добавляет все новое, не начиная новую строку. В результате получается бесконечный однострочный журнал.
основная программа тестирования:
import sys
import os
import json
import logging.config
import my_module
def setup_logging(
default_path='logging.json',
default_level=logging.INFO,
env_key='LOG_CFG'
):
"""
Setup logging configuration
"""
path = default_path
value = os.getenv(env_key, None)
if value:
path = value
if os.path.exists(path):
with open(path, 'rt') as f:
config = json.load(f)
logging.config.dictConfig(config)
else:
logging.basicConfig(level=default_level)
def main():
setup_logging()
logger = logging.getLogger(__name__)
logger.info('Startlogging:')
my_module.foo()
b = my_module.Bar()
b.bar()
print logger.handlers
if __name__ == '__main__':
main()
Подробнее здесь: https://stackoverflow.com/questions/464 ... onfig-file
Ведение журнала Python с помощью файла конфигурации json ⇐ Python
Программы на Python
-
Anonymous
1732313195
Anonymous
Я поигрался с модулем журналирования и обнаружил некоторые вещи, которые мне не совсем понятны.
Прежде всего, поскольку это большая программа, я хотел, чтобы код был таким, как максимально просто, поэтому я использовал файл конфигурации json.
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"simple": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
},
"extra": {
"format": "%(asctime)-16s %(name)-8s %(filename)-12s %(lineno)-6s %(funcName)-30s %(levelname)-8s %(message)s",
"datefmt": "%m-%d %H:%M:%S"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "simple",
"stream": "ext://sys.stdout"
},
"info_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "simple",
"filename": "info.log",
"maxBytes": 10485760,
"backupCount": 40,
"encoding": "utf8"
},
"error_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "ERROR",
"formatter": "simple",
"filename": "errors.log",
"maxBytes": 10485760,
"backupCount": 40,
"encoding": "utf8"
}
},
"loggers": {
"my_module": {
"level": "ERROR",
"handlers": ["console"],
"propagate": "no"
}
},
"root": {
"level": "INFO",
"handlers": ["console", "info_file_handler", "error_file_handler"]
}
}
Этот файл JSON импортируется и используется. Кажется, работает нормально.
К сожалению, есть некоторые проблемы.
После завершения кода (все еще работающего над ним) регистратор не закрывает файл. И из-за этого при следующем запуске он добавляет новый запуск к старому файлу журнала. Нет возможности без проблем удалить его или truncate().
Поэтому я хотел удалить обработчики записи файлов. К сожалению, похоже, что logger.handlers пуст, и поэтому я не могу их нигде найти. Наверное, есть идея?
Кроме того, с файлами журналов есть серьезная проблема. Регистратор просто добавляет все новое, не начиная новую строку. В результате получается бесконечный однострочный журнал.
основная программа тестирования:
import sys
import os
import json
import logging.config
import my_module
def setup_logging(
default_path='logging.json',
default_level=logging.INFO,
env_key='LOG_CFG'
):
"""
Setup logging configuration
"""
path = default_path
value = os.getenv(env_key, None)
if value:
path = value
if os.path.exists(path):
with open(path, 'rt') as f:
config = json.load(f)
logging.config.dictConfig(config)
else:
logging.basicConfig(level=default_level)
def main():
setup_logging()
logger = logging.getLogger(__name__)
logger.info('Startlogging:')
my_module.foo()
b = my_module.Bar()
b.bar()
print logger.handlers
if __name__ == '__main__':
main()
Подробнее здесь: [url]https://stackoverflow.com/questions/46448113/python-logging-with-json-config-file[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия