أفضل ممارسات التسجيل المنظّم
طبّق التسجيل المنظّم لتسهيل التحليل والمعالجة وتسريع تصحيح مشكلات الإنتاج
أفضل ممارسات التسجيل المنظّم درس مجاني في Production Debugging & Incident Response Playbook على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Production Debugging & Incident Response Playbook، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Production Debugging & Incident Response Playbook 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
What are Logs?
Logs are records of events that happen in your application or system. Think of them as a diary for your software!
They're crucial for understanding what your program is doing, especially when things go wrong in a live "production" environment.
The Messy Truth
Often, logs are just plain text strings. This is called unstructured logging. While easy to write, unstructured logs are hard for computers to read and analyze, making debugging a slow, manual process.
Consider this example:
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def process_order(order_id, item_count):
logger.info(f"Processing order {order_id} with {item_count} items.")
if item_count > 10:
logger.warning(f"Large order detected for {order_id}. Items: {item_count}.")
logger.info(f"Order {order_id} processed successfully.")
if __name__ == "__main__":
process_order("ORD-123", 5)
process_order("ORD-456", 12)What is Structured Logging?
Structured logging means your logs are formatted as machine-readable data, not just free-form text. The most common format is JSON.
Instead of a single string, each log entry is an object with key-value pairs. This makes them easy to search, filter, and analyze programmatically.
Why Structured Logging Rocks
Structured logs offer many advantages:
- Faster Debugging: Quickly find relevant events.
- Better Analysis: Easily query and aggregate data.
- Automated Tools: Integrate with monitoring and alerting systems.
- Consistency: Ensures all logs contain expected fields.
JSON is King
While other formats exist, JSON (JavaScript Object Notation) is the most popular choice for structured logging due to its simplicity and widespread support.
A JSON log entry is a self-contained object, making it incredibly versatile for storing varied data. Here's what a structured log might look like:
{
"timestamp": "2023-10-27T10:30:00Z",
"level": "INFO",
"service": "order-processor",
"message": "Order processed successfully",
"order_id": "ORD-123",
"item_count": 5
}Code It Up!
Let's see how to implement structured logging. Many languages have libraries that make this easy. Here's a basic Python example using the standard logging module with a custom JSON formatter.
import logging
import json
class JsonFormatter(logging.Formatter):
def format(self, record):
log_entry = {
"timestamp": self.formatTime(record, self.datefmt),
"level": record.levelname,
"name": record.name,
"message": record.getMessage(),
"file": record.filename,
"line": record.lineno
}
if hasattr(record, 'order_id'):
log_entry['order_id'] = record.order_id
if hasattr(record, 'item_count'):
log_entry['item_count'] = record.item_count
return json.dumps(log_entry)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(JsonFormatter())
logger.addHandler(handler)
def process_order(order_id, item_count):
extra_data = {'order_id': order_id, 'item_count': item_count}
logger.info("Processing order", extra=extra_data)
if item_count > 10:
logger.warning("Large order detected", extra=extra_data)
logger.info("Order processed successfully", extra=extra_data)
if __name__ == "__main__":
process_order("ORD-123", 5)
process_order("ORD-456", 12)Must-Have Fields
Every structured log entry should include these core fields for effective analysis:
timestamp: When the event happened (ISO 8601 format).level: Severity (INFO, WARN, ERROR, DEBUG).service: Which service or application generated the log.message: A human-readable summary of the event.hostname/pod_name: Where the log originated.
Enrich Your Logs
Beyond essential fields, add contextual data specific to the event. This is key for tracing requests across distributed systems, helping you connect the dots when debugging complex issues.
request_id: To track a single user request.user_id: To identify the user involved.transaction_id: For specific business transactions.
import logging
import json
import uuid
# Reusing the JsonFormatter from previous scene
class JsonFormatter(logging.Formatter):
def format(self, record):
log_entry = {
"timestamp": self.formatTime(record, self.datefmt),
"level": record.levelname,
"message": record.getMessage()
}
for key, value in record.__dict__.items():
if not key.startswith('_') and key not in ['name', 'levelname', 'pathname', 'filename', 'module', 'exc_info', 'exc_text', 'stack_info', 'lineno', 'funcName', 'created', 'msecs', 'relativeCreated', 'thread', 'threadName', 'processName', 'process', 'args', 'msg', 'asctime']:
log_entry[key] = value
return json.dumps(log_entry)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(JsonFormatter())
logger.addHandler(handler)
def handle_web_request(user_id):
request_id = str(uuid.uuid4())[:8]
extra_data = {'request_id': request_id, 'user_id': user_id, 'service': 'api-gateway'}
logger.info("Received web request", extra=extra_data)
if user_id == "user-vip":
logger.info("VIP user request detected", extra=extra_data)
else:
logger.debug("Standard user request", extra=extra_data)
logger.info("Request processed", extra=extra_data)
if __name__ == "__main__":
handle_web_request("user-123")
handle_web_request("user-vip")Log Levels
Log levels help categorize the severity and importance of a log message. Common levels include:
- DEBUG: Detailed info, only useful when diagnosing problems.
- INFO: Confirmation that things are working as expected.
- WARN: An unexpected event, but the application is still running.
- ERROR: An error that prevents some functionality from working.
- CRITICAL: A severe error, application might be unable to continue.
Quick Check
Structured logging is a powerful technique for improving observability. Let's test your understanding of its key advantages.
Structured Logging Recap
You've learned about the power of structured logging! By formatting your logs as machine-readable data (like JSON), you unlock faster debugging, better analysis, and seamless integration with monitoring tools.
Remember to include essential fields and contextual data to make your logs truly useful for diagnosing issues in production.
تعلم Production Debugging & Incident Response Playbook مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 12
- الدروس
- 48
الأسئلة الشائعة
هل درس «أفضل ممارسات التسجيل المنظّم» مجاني؟
نعم — نص درس «أفضل ممارسات التسجيل المنظّم» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Production Debugging & Incident Response Playbook، انتقل إلى CoddyKit PRO. تتضمن دورة Production Debugging & Incident Response Playbook 4 دروس في المجموع.
ماذا ستتعلم في «أفضل ممارسات التسجيل المنظّم»؟
طبّق التسجيل المنظّم لتسهيل التحليل والمعالجة وتسريع تصحيح مشكلات الإنتاج تتمرن على Production Debugging & Incident Response Playbook مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Production Debugging & Incident Response Playbook؟
لا تُشترط خبرة سابقة. Production Debugging & Incident Response Playbook على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أفضل ممارسات التسجيل المنظّم»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Production Debugging & Incident Response Playbook هذا؟
نعم. كل درس في Production Debugging & Incident Response Playbook يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أفضل ممارسات التسجيل المنظّم
- المقاييس ولوحات المعلومات وقابلية الرصد
- تصميم استراتيجيات ذكية للتنبيهات
- استراتيجيات تجميع السجلات والاحتفاظ بها