Удалить ненужную информацию из файла журнала - PullRequest
0 голосов
/ 26 апреля 2018

Мой скрипт Python записывает файл журнала, используя log.startLogging(sys.stdout) и log.startLogging(DailyLogFile.fromFullPath('sms.log')). Это делает хорошую работу. Но это довольно громоздко и скучно. Я не хочу анализировать его в XML с конкретными тегами и без лишней информации , , поэтому он более эстетичен для человеческого глаза .

Информация о том, что и кому было отправлено: Номер телефона (29999999) , текст (text1) , идентификатор пользователя (666) и ID события (1) :

2018-04-26 11:42:25+0300 [-] ('29999999', 'text1', '666', '1')
2018-04-26 11:42:25+0300 [SMSManagementProtocol,client] TX WAMP: [7,"psevent:send_sms",{"sms_txt":"text1","id_nr":"666","key":"1","phone_nr":"29999999"},null]
2018-04-26 11:42:25+0300 [-] ('29999999', 'text2', '666', '2')
2018-04-26 11:42:25+0300 [SMSManagementProtocol,client] TX WAMP: [7,"psevent:send_sms",{"sms_txt":"text2","id_nr":"666","key":"2","phone_nr":"29999999"},null]
2018-04-26 11:42:25+0300 [-] ('29999999', 'text3', '666', '3')
2018-04-26 11:42:25+0300 [SMSManagementProtocol,client] TX WAMP: [7,"psevent:send_sms",{"sms_txt":"text3","id_nr":"666","key":"3","phone_nr":"29999999"},null]

СОБЫТИЕ (ответ со статусом, если оно доставлено или произошла ошибка):

2018-04-26 11:43:23+0300 [-] EVENT: http://test.com/publicsubscribeon_sms_delivered_OK KEY: 1
2018-04-26 11:43:23+0300 [SMSManagementProtocol,client] RX WAMP: [8, "http://test.com/publicsubscribeon_sms_delivered_OK", "3"]
2018-04-26 11:43:23+0300 [-] EVENT: http://test.com/publicsubscribeon_sms_delivered_OK KEY: 3
2018-04-26 11:43:23+0300 [SMSManagementProtocol,client] RX WAMP: [8, "http://test.com/publicsubscribeon_sms_delivered_OK", "2"]
2018-04-26 11:43:23+0300 [-] EVENT: http://test.com/publicsubscribeon_sms_delivered_OK KEY: 2

Есть ли способ удалить ненужную информацию журнала? Все, что мне нужно, это данные.

Есть предложения?

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете сделать это, написав собственный форматер журнала.

Вы получите более подробную информацию Здесь

Проверьте код ниже, который я использую в своих приложениях для регистрации.

log_path = "logs"
log_file = "log"
rootlogger = logging.getLogger('')
fmt = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s : %(message)s')
sh = logging.StreamHandler()
sh.setFormatter(fmt)
rootlogger.addHandler(sh)
logsize = 102400
logbackupcount = 100
rfh = logging.handlers.RotatingFileHandler(log_path+"/"+log_file, maxBytes=logsize, backupCount=logbackupcount)
rfh.setFormatter(fmt)
rootlogger.addHandler(rfh)

следуйте приведенному ниже фрагменту кода для записи логов.

import logging
log = logging.getLogger(<logger_name>) 
log.info("information")
log.error("Error message")
...