问题遇到的现象和发生背景
python logging 使用MongoHandler 输出日志到MongoDB时,UTC时间戳timestamp遵循UTC-00时区
问题相关代码,请勿粘贴截图
from telethon import TelegramClient,sync,events
from datetime import datetime
import pytz
import logging
import logging.handlers
from log4mongo.handlers import MongoHandler
from logging import *
from data import *
LOG_FILENAME = 'main.log'
logger = logging.getLogger()
def set_logger(mongodb=False):
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(process)d-%(threadName)s - '
'%(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
if mongodb:
# log output to mongodb
db_name = 'Telegram_log'
tzinfo = pytz.timezone('Asia/Shanghai') # 时区
mon_handler = MongoHandler(host='127.0.0.1',
port=int('27017'),
database_name='Telegram_log',
collection='Telegram_log',
username='jane',
password='q147258369.',
tz_aware=True,
tzinfo=tzinfo)
mon_handler.setLevel(logging.DEBUG)
logger.addHandler(mon_handler)
else:
# log output to file
file_handler = logging.handlers.RotatingFileHandler(
LOG_FILENAME, maxBytes=10485760, backupCount=5, encoding="utf-8")
logger.addHandler(file_handler)
set_logger(mongodb=True)
client = TelegramClient('session_file', api_id, api_hash)
client.start()
F = open("list.txt", "w")
result = ""
dialog = client.get_dialogs(limit=None)
for single in dialog:
result += str(single.name) + '|' + str(single.entity.id) + '\r\n'
print(result)
F.write(result)
F.close()
print("Information has wrote in list.txt")
运行结果及报错内容
我的解答思路和尝试过的方法
时区偏移
我想要达到的结果
Mongo 数据包中的timestamp字段能够显示北京时区