behzad/file-logger

A lightweight Laravel package for logging model changes in files with restore capabilities.

Installs: 7

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/behzad/file-logger

v1.0.6 2025-10-18 11:29 UTC

This package is auto-updated.

Last update: 2025-10-18 11:29:46 UTC


README

یک پکیج سبک و کاربردی برای لاگ کردن تغییرات مدل‌ها در فایل‌های JSON

نصب

✨ ویژگی‌ها

  • 🔍 لاگ خودکار تغییرات - تمام عملیات Create, Update, Delete
  • 💾 ذخیره در فایل JSON - بدون نیاز به دیتابیس اضافی
  • 🔄 بازیابی رکوردهای حذف شده - Restore از روی لاگ‌ها
  • 👤 ثبت اطلاعات کاربر - User ID, IP, User Agent
  • ⚙️ کانفیگ انعطاف‌پذیر - تنظیمات کامل و قابل شخصی‌سازی
  • 🎯 Exclude فیلدها - عدم لاگ فیلدهای حساس مثل password
  • 📊 File Rotation - مدیریت خودکار سایز فایل‌ها
  • 🚀 Performance بالا - بدون تاثیر منفی روی عملکرد
  • 🛠️ Artisan Commands - دستورات مفید برای مدیریت لاگ‌ها
  • 🎨 Facade Support - استفاده آسان با Facade

📦 نصب

نصب از طریق Composer

composer require behzad/file-logger

انتشار فایل کانفیگ

php artisan vendor:publish --tag=file-logger-config

🚀 راه‌اندازی سریع

گام 1: اضافه کردن Trait به مدل

<?php

<<<<<<< Updated upstream
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
=======
php artisan vendor:publish --tag=file-logger-config

>>>>>>> Stashed changes
use Behzad\FileLogger\Traits\FileLoggerTrait;

class Post extends Model
{
    use FileLoggerTrait;

    protected $fillable = ['title', 'content', 'status'];
}
<<<<<<< Updated upstream

گام 2: استفاده خودکار

// Create - لاگ می‌شود
$post = Post::create([
    'title' => 'عنوان پست',
    'content' => 'محتوای پست',
    'status' => 'published'
]);

// Update - لاگ می‌شود
$post->update(['title' => 'عنوان جدید']);

// Delete - لاگ می‌شود
$post->delete();

📖 مستندات کامل

🔧 تنظیمات (Configuration)

فایل config/file-logger.php:

<?php

return [
    // مسیر ذخیره لاگ‌ها
    'storage_path' => storage_path('logs/file_logger'),

    // فرمت ذخیره (json یا line)
    'format' => 'json',

    // لاگ کردن IP کاربر
    'log_ip' => true,

    // لاگ کردن User Agent
    'log_user_agent' => true,

    // فیلدهایی که نباید لاگ شوند
    'excluded_fields' => [
        'password',
        'remember_token',
        'api_token',
    ],

    // حداکثر سایز فایل لاگ (MB)
    'max_file_size' => 10,

    // فرمت تاریخ
    'date_format' => 'Y-m-d H:i:s',
];

📝 ساختار لاگ

{
    "event_type": "updated",
    "model": "App\\Models\\Post",
    "model_id": 123,
    "old_values": {
        "title": "عنوان قدیمی",
        "status": "draft"
    },
    "new_values": {
        "title": "عنوان جدید",
        "status": "published"
    },
    "user_id": 1,
    "ip": "192.168.1.1",
    "user_agent": "Mozilla/5.0...",
    "timestamp": "2025-10-18 14:30:45"
}

🎯 استفاده پیشرفته

1️⃣ بازیابی رکوردهای حذف شده

روش اول: استفاده از مدل

// بازیابی تمام رکوردهای حذف شده
$result = Post::restoreFromFile();

// نتیجه:
// [
//     'success' => true,
//     'restored_count' => 5,
//     'records' => [...]
// ]

روش دوم: استفاده از Facade

use Behzad\FileLogger\Facades\FileLogger;

$result = FileLogger::restoreFromFile(Post::class);

روش سوم: دستور Artisan

php artisan file-logger:restore "App\Models\Post"

2️⃣ مشاهده لاگ‌ها

$logs = Post::getLogs();

3️⃣ پاک کردن لاگ‌ها

Post::clearLogs();

🛠️ دستورات Artisan

# پاک کردن تمام لاگ‌ها (با تایید)
php artisan file-logger:clear

# پاک کردن لاگ یک مدل خاص
php artisan file-logger:clear Post

# پاک کردن لاگ با نام کامل کلاس
php artisan file-logger:clear "App\Models\User"

بازیابی از لاگ

# بازیابی رکوردهای حذف شده
php artisan file-logger:restore "App\Models\Post"

🤝 مشارکت

مشارکت‌ها همیشه خوش‌آمد هستند! لطفاً: Repository را Fork کنید یک Branch جدید بسازید (git checkout -b feature/amazing-feature) تغییرات را Commit کنید (git commit -m 'Add amazing feature') به Branch خود Push کنید (git push origin feature/amazing-feature) یک Pull Request باز کنید

📄 لایسنس

این پکیج تحت لایسنس MIT منتشر شده است.

👨‍💻 توسعه‌دهنده

📧 Email: Amirbehzadofficial@gmail.com 🐙 GitHub: @Amirbehzad11

=======

2.بازیابی رکورد های حذف شده

Stashed changes