В PHP Laravel, как очистить laravel.log?

Я новичок в Laravel и PHP в целом, и я пытаюсь очистить свой ErrorLog. Текущий журнал ошибок, который я использую, - это файл Laravel laravel.log, который находится в /app/storage/logs.

Есть ли простой способ очистить файл laravel.log? Безопасно ли его удалять, и при необходимости он будет восстанавливаться?

Я использую последнюю версию Ubuntu. Благодарю!

Ответ 1

Вывод пустой строки к нему будет работать, как это:

echo "" > storage/logs/laravel.log

Наиболее эффективным было бы truncate его до нулевого размера:

truncate -s 0 /app/storage/logs/laravel.log

Ответ 2

Здесь многоразовая команда artisan, которая сэкономит ваше время и усилия :)

Artisan::command('logs:clear', function() {

    exec('rm ' . storage_path('logs/*.log'));

    $this->comment('Logs have been cleared!');

})->describe('Clear log files');

Оставьте это в routes/console.php, затем просто запустите php artisan logs:clear

Ответ 3

Самый простой способ для меня - использовать vim.

$ vim laravel.log

Then type ggdG

Then :wq save and quit.

Примечания: gg - перемещает курсор на первую строку

d - удалить

G - до конца файла

Ответ 4

Просто добавьте эту строку, где вы хотите очистить журнал. file_put_contents(storage_path('logs/laravel.log'),'');

Ответ 5

Это сработало для меня:

echo "" > storage/logs/laravel.log

Ответ 6

Вы также можете создать собственную команду ремесленника.

Сначала выполните команду php artisan make:command Log/ClearLogFile чтобы создать собственный командный файл.

Затем откройте файл в Console/Commands/Log/ClearLogFile.php (зависит от вашей версии Laravel, в настоящее время я использую версию 5.5)

После этого вам нужно определить пользовательский код команды, посмотрите

// Define command name
protected $signature = 'log:clear';

// Add description to your command
protected $description = 'Clear Laravel log';

// Create your own custom command
public function handle(){
    exec('echo "" > ' . storage_path('logs/laravel.log'));
    $this->info('Logs have been cleared');
}

Затем вам нужно всего лишь запустить, как и другие команды php artisan,

php artisan log:clear

Спасибо за ответ @emotality

Ответ 7

Из вашего каталога Laravel:

rm storage/logs/laravel-*.log

Ответ 8

Для Laravel 5 это было бы

truncate -s 0 storage/logs/laravel.log

Ответ 9

Вы также можете сделать:: : > storage/logs/laravel.log

Ответ 10

Я обычно добавляю следующую строку в метод контроллера, когда запускаю прослушиватель SQL-запросов:

exec("truncate -s 0 ". storage_path('/logs/laravel.log'));

Если вы используете другую настройку monolog канала, вы можете настроить имя вашего файла журнала.

Ответ 11

Я обнаружил, что это решение хорошо работает для Windows

Artisan::command('logs:clear', function() {
   array_map('unlink', array_filter((array) glob(storage_path('logs/*.log'))));
   $this->comment('Logs have been cleared!');
})->describe('Clear log files');

Run php artisan logs:clear