import logging import os import json from datetime import datetime, timezone from logging.handlers import RotatingFileHandler from pythonjsonlogger import jsonlogger import logging.config log_dir = os.path.join(os.path.dirname(__file__), 'log') # اگر فولدر وجود نداشت، ایجادش کن if not os.path.exists(log_dir): os.makedirs(log_dir) log_file = os.path.join(log_dir, 'app.log') logger = logging.getLogger("structured_logger") logger.setLevel(logging.INFO) handler = RotatingFileHandler(log_file, maxBytes=3*1024*1024, backupCount=5) # فرمت لاگ به صورت JSON class JsonFormatter(logging.Formatter): def format(self, record): log_record = { # "timestamp": datetime.now().isoformat(), "timestamp": datetime.now(timezone.utc).isoformat(), "level": record.levelname, "message": record.getMessage(), # فیلدهای دلخواه "user_id": getattr(record, "user_id", None), "action": getattr(record, "action", None), "status": getattr(record, "status", None) } return json.dumps(log_record, ensure_ascii=False) handler.setFormatter(JsonFormatter()) logger.addHandler(handler) # logging_file = "logging.ini" # logging_file = os.path.join(os.path.dirname(__file__), logging_file) # logging.config.fileConfig(logging_file) # logger = logging.getLogger(__name__) # file_handler.setFormatter(JsonFormatter()) # logger.addHandler(file_handler) # تابع برای تولید لاگ با فیلدهای دلخواه def generate_logs(x): x = x * 4 logger.info("برنامه شروع شد", extra={"user_id": x, "action": "start", "status": "ok"}) logger.warning("هشدار شبیه‌سازی شد", extra={"user_id": x+1, "action": "warn_test", "status": "warning"}) logger.error("خطا شبیه‌سازی شد", extra={"user_id": x+2, "action": "error_test", "status": "error"}) logger.info("لاگ سفارشی", extra={"user_id": x+3, "action": "custom", "status": "ok"}) def main(): offset = 208000//4 for i in range(1): generate_logs(i + offset) if __name__ == "__main__": main() # print(f"لاگ‌ها در فایل {log_file} ذخیره شدند")