DEV Community

Cover image for PHP Logger with Email Notifications | Error Tracking in PHP
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on

PHP Logger with Email Notifications | Error Tracking in PHP

Topics: PHP, Logging, Email Notifications, Error Handling, Web Development, PHP File Logging, Critical Error Handling, PHP Tutorials, PHP Best Practices, Software Development


Table of Contents

  1. Introduction
  2. Requirements Analysis
  3. File Structure
  4. Implementation
    • Configuration (config.php)
    • Logger Class (Logger.php)
    • Example Usage (index.php)
  5. Explanation
  6. Enhancements (Optional)
  7. Conclusion

1. Intruduction

This PHP logger writes logs to a file and sends email notifications for critical issues. It includes a flexible configuration, supports custom severity levels, and demonstrates best practices for file handling and error notifications in PHP.


2. Requirements Analysis

  • Purpose: Create a logging system that writes logs to a file and sends email notifications for critical errors.
  • Features:
    1. Log messages to a file with timestamps and severity levels.
    2. Notify via email for "ERROR" or "CRITICAL" logs.
    3. Configurable log file path and email settings.
  • Input: Log messages with severity (INFO, WARNING, ERROR, CRITICAL).
  • Output:
    • Log entries stored in a file.
    • Emails sent for critical issues.
  • Constraints:
    • Use only PHP-compatible syntax.
    • Handle errors gracefully to avoid application crashes.

3. File Structure

project/
│
├── logger/
│   ├── Logger.php         # Core Logger class
│   ├── config.php         # Configuration for email and file paths
│
├── logs/
│   └── app.log            # Example log file (generated dynamically)
│
└── index.php              # Example usage of the Logger
Enter fullscreen mode Exit fullscreen mode

5. Explanation

  1. Configuration (config.php):

    • Stores file path and email settings.
    • Ensures flexibility for changing email or log paths.
  2. Logger Class (Logger.php):

    • Handles logging of messages with timestamps and severity levels.
    • Sends emails for errors and critical logs using PHP's mail() function.
    • Creates log directories if they don’t exist.
  3. Example Usage (index.php):

    • Demonstrates how to use the Logger class to log messages of various severities.
  4. Logger Class:

    • Contains methods for logging messages to a file and sending email notifications.
    • Log levels (INFO, WARNING, ERROR, etc.) categorize the messages for better debugging.
  5. log() Method:

    • Appends log entries to the specified file.
    • Sends an email notification for ERROR or FATAL levels when enabled.
  6. sendEmail() Method:

    • Uses PHP’s mail() function to send email notifications.
    • Can be replaced with PHPMailer for more robust email handling.

6. Enhancements (Optional)

  1. Add SMTP Support:
    Use the PHPMailer library for more robust email notifications.

  2. Database Logging:
    Store logs in a database for better querying and analysis.

  3. Customizable Severity Levels:
    Allow users to specify which log levels trigger email notifications.

    'email_notifications' => [
        'enabled' => true,
        'levels' => ['ERROR', 'FATAL'], // Add this key
        ...
    ]
    

    Modify the email logic to check against levels.

  4. Email Notification
    For critical errors, ensure that the admin receives an email with the error message. The email should contain the following information:

    Subject:

    Critical Error Notification
    

    Body:

    [2024-11-28 12:35:30] [CRITICAL]: Database connection failed!
    
  5. JSON Logs:
    Format logs as JSON for structured logging.


7. Conclusion

Creating a custom logger with email notifications enhances error tracking and system monitoring. The solution is simple yet extensible, allowing for future enhancements like SMTP integration or log rotation. This demonstrates how PHP can handle both file-based logging and email notifications effectively.

If you'd like to explore best practices more, Click Here.

Stay Connected!

  • Connect with me on LinkedIn to discuss ideas or projects.
  • Check out my Portfolio for exciting projects.
  • Give my GitHub repositories a star ⭐ on GitHub if you find them useful!

Your support and feedback mean a lot! 😊

Top comments (0)