weixin_60240511 2022-04-13 14:24 采纳率: 50%
浏览 65
已结题

python logging 使用MongoHandler 输出日志到MongoDB时,MongoDB表中的时间戳timestamp遵循UTC-00时区

问题遇到的现象和发生背景

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字段能够显示北京时区

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月14日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用