Ответ 1
Вывод пустой строки к нему будет работать, как это:
echo "" > storage/logs/laravel.log
Наиболее эффективным было бы truncate
его до нулевого размера:
truncate -s 0 /app/storage/logs/laravel.log
Я новичок в Laravel и PHP в целом, и я пытаюсь очистить свой ErrorLog. Текущий журнал ошибок, который я использую, - это файл Laravel laravel.log, который находится в /app/storage/logs.
Есть ли простой способ очистить файл laravel.log? Безопасно ли его удалять, и при необходимости он будет восстанавливаться?
Я использую последнюю версию Ubuntu. Благодарю!
Вывод пустой строки к нему будет работать, как это:
echo "" > storage/logs/laravel.log
Наиболее эффективным было бы truncate
его до нулевого размера:
truncate -s 0 /app/storage/logs/laravel.log
Здесь многоразовая команда 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
Самый простой способ для меня - использовать vim.
$ vim laravel.log Then type ggdG Then :wq save and quit.
Примечания: gg - перемещает курсор на первую строку
d - удалить
G - до конца файла
Просто добавьте эту строку, где вы хотите очистить журнал. file_put_contents(storage_path('logs/laravel.log'),'');
Это сработало для меня:
echo "" > storage/logs/laravel.log
Вы также можете создать собственную команду ремесленника.
Сначала выполните команду 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
Из вашего каталога Laravel:
rm storage/logs/laravel-*.log
Для Laravel 5 это было бы
truncate -s 0 storage/logs/laravel.log
Вы также можете сделать:: : > storage/logs/laravel.log
Я обычно добавляю следующую строку в метод контроллера, когда запускаю прослушиватель SQL-запросов:
exec("truncate -s 0 ". storage_path('/logs/laravel.log'));
Если вы используете другую настройку monolog
канала, вы можете настроить имя вашего файла журнала.
Я обнаружил, что это решение хорошо работает для 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