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
- Introduction
- Requirements Analysis
- File Structure
- Implementation
- Configuration (
config.php
) - Logger Class (
Logger.php
) - Example Usage (
index.php
)
- Configuration (
- Explanation
- Enhancements (Optional)
- 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:
- Log messages to a file with timestamps and severity levels.
- Notify via email for "ERROR" or "CRITICAL" logs.
- 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
5. Explanation
-
Configuration (
config.php
):- Stores file path and email settings.
- Ensures flexibility for changing email or log paths.
-
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.
-
Example Usage (
index.php
):- Demonstrates how to use the Logger class to log messages of various severities.
-
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.
-
log()
Method:- Appends log entries to the specified file.
- Sends an email notification for
ERROR
orFATAL
levels when enabled.
-
sendEmail()
Method:- Uses PHP’s
mail()
function to send email notifications. - Can be replaced with PHPMailer for more robust email handling.
- Uses PHP’s
6. Enhancements (Optional)
Add SMTP Support:
Use the PHPMailer library for more robust email notifications.Database Logging:
Store logs in a database for better querying and analysis.-
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
. -
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!
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.
Top comments (0)