日志位于何处?
Posted
技术标签:
【中文标题】日志位于何处?【英文标题】:Where are logs located? 【发布时间】:2016-09-28 20:28:34 【问题描述】:我正在调试 JSON 端点并且需要查看内部服务器错误。但是,我的app/storage/logs
目录是空的,并且似乎没有其他目录专门用于项目中的日志。我试过用谷歌搜索这个主题无济于事。
如何启用日志记录(如果尚未启用)并查看日志?
【问题讨论】:
你能告诉你目前的设置是什么吗? SO 和 http 服务器。 默认情况下,Laravel 应该记录storage
文件夹中的所有内容。您的配置是否具有存储在日志中的正确权限?您可以在/var/log/apache2/error.log
中检查您的 apache 日志 - 这会告诉您您是否没有正确的权限。
您使用哪种方法进行日志记录? error_log
会使用默认的 php 日志目录,Log::error
会使用默认的 Laravel 日志目录
@ÁlvaroGuimarães 我不知道该怎么做,但一切都设置为默认值
@James 根据回答问题的 Denis Mysenko 的说法,权限不是问题
【参考方案1】:
确保调试模式已开启 - 将 APP_DEBUG=true
添加到 .env 文件或设置环境变量
日志文件位于 storage/logs 文件夹中。 laravel.log
是默认文件名。如果日志文件夹存在权限问题,Laravel 就会停止。因此,如果您的端点通常可以正常工作 - 权限不是问题。
如果您的调用甚至没有到达 Laravel 或者不是由代码问题引起 - 检查 Web 服务器的日志文件(检查您的 Apache/nginx 配置文件以查看路径)。
李>如果您使用 PHP-FPM,请同时检查其日志文件(您可以在 PHP-FPM 池配置中查看日志文件的路径)。
【讨论】:
laravel.log
文件不存在,但日志存在于默认 PHP 日志目录中
要么在 Laravel 端没有异常/错误,要么 Laravel 没有足够的权限写入日志文件。您在 HTTP 客户端中看到了什么 - 您是否看到任何错误?
不,HTTP 客户端中没有显示错误。你不是说,如果有任何权限问题,Laravel 就会停止吗?
是的,那可能是个问题。检查您的 Web 进程在哪个用户下运行,确保该用户有权写入 1) storage/logs 2) storage/framework 3) bootstrap/cache 文件夹【参考方案2】:
您应该检查根目录而不是应用程序目录。
查看$ROOT/storage/laravel.log
而不是app/storage/laravel.log
,其中root 是项目的***目录。
【讨论】:
我认为它是 storage/logs/laravel.log 而不是 storage/laravel.log,相对于项目的根目录。 $root 在哪里?如果我这样做:cd /
我看到一些文件夹但没有存储,唯一有存储文件夹的东西在 app 文件夹内但与 OP 相同,我没有 laravel.logs
文件,谢谢。【参考方案3】:
在 Laravel 6 中,默认情况下日志位于:
storage/logs/laravel.log
【讨论】:
【参考方案4】:确保 APP_DEBUG=true
在您的 .env 上设置为开启
如果您想轻松检查您的存储日志,您可以安装:
https://github.com/rap2hpoutre/laravel-log-viewer
【讨论】:
【参考方案5】:您可以通过storage_path() . '/logs'
以编程方式访问该位置:
$logFiles = array_filter(
scandir(storage_path() . '/logs'),
fn($fn) => !str_starts_with($fn,'.') // filter everything that begins with dot
);
【讨论】:
【参考方案6】:日志文件的位置可以在channels
数组config/logging.php
中找到(见下文)
如果有人想写信到single
频道,
使用 Laravel 的 Log Facade,这里是如何做的。
Log::channel('single')->info('Your message');
【讨论】:
以上是关于日志位于何处?的主要内容,如果未能解决你的问题,请参考以下文章
1 周后如何处理来自分布式日志代理(例如 Kafka)的日志?