php 日志调试

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: php 日志调试
/**
 * 仅用于日志调试
 *
 * @param  string|array $content    日志内容
 * @param  bool         $json       是否采用JSON格式存储
 * @param  bool         $append     是否采用追加模式记录日志
 * @param  string       $filename   文件名(考虑到权限问题,统统压入/tmp目录)
 *
 * @return int
 */
if (!function_exists("debug")) {
    function debug($content, $json = true, $append = true, $filename = "debug", $base_dir = "/tmp/")
    {
        if (empty($filename) || empty($content)) return 0;
        $filename = str_replace("/", "", $filename);
        $filename = str_replace("\\", "", $filename);
        //        if ("linux" == strtolower(PHP_OS)) {
        //            $dir = !empty($base_dir) ? $base_dir : (env("CACHE_DIR") ? env("CACHE_DIR") . "/logs/" : "/tmp/");
        //        } else {
        //            $dir = env("CACHE_DIR") ? CACHE_DIR : 'C:\\';
        //        }
        $dir = storage_path('logs/' . date('Ymd'));
        $rs = true;
        //if (!is_dir($dir)) {
        $rs = @mkdir($dir, 0755, true);
        //}
        if (empty($rs)) $dir = "/tmp/";
        $filename = $dir . DIRECTORY_SEPARATOR . $filename . ".log";
        if (!empty($json)) {
            $content = json_encode($content, JSON_UNESCAPED_UNICODE);
        } else {
            $content = var_export($content, true);
        }
        $client_ip = getClientIp();
        $log_time = date('Y-m-d H:i:s', time());
        $content = "【" . $log_time . " | {$client_ip}】" . $content . "\r\n";
        if (empty($append)) {
            $rs = file_put_contents($filename, $content);
        } else {
            $rs = file_put_contents($filename, $content, FILE_APPEND);
        }
        return $rs;
    }
}
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
消息中间件 存储 Java
手动实现 Spring Boot 日志链路追踪:提升调试效率的利器
【8月更文挑战第8天】在复杂的分布式系统中,日志是诊断问题、追踪系统行为的重要工具。然而,随着微服务架构的普及,服务间的调用链路错综复杂,传统的日志记录方式往往难以快速定位问题源头。今天,我们将探讨如何在不依赖外部组件(如Zipkin、Sleuth等)的情况下,手动实现Spring Boot应用的日志链路追踪,让日志定位更加便捷高效。
76 1
|
1月前
|
XML Java 数据库
"揭秘!Spring Boot日志链路追踪大法,让你的调试之路畅通无阻,效率飙升,问题无所遁形!"
【8月更文挑战第11天】在微服务架构中,请求可能跨越多个服务与组件,传统日志记录难以全局追踪问题。本文以电商系统为例,介绍如何手动实现Spring Boot应用的日志链路追踪。通过为每个请求生成唯一追踪ID并贯穿全链路,在服务间传递该ID,并在日志中记录,即使日志分散也能通过ID串联。提供了实现这一机制所需的关键代码片段,包括使用过滤器设置追踪ID、业务代码中的日志记录及Logback配置。此方案显著提升了问题定位的效率,适用于基于Spring Boot构建的微服务环境。
39 4
|
17天前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
27 0
|
18天前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
46 0
|
3月前
|
PHP 开发者
PHP中的异常处理与错误调试
【6月更文挑战第29天】在PHP开发过程中,异常处理和错误调试是保证代码质量与应用稳定性的重要环节。本文将深入探讨PHP的异常处理机制,介绍如何通过try-catch语句捕获异常,以及自定义异常类的创建和使用。同时,文章还将讨论PHP错误类型、错误日志记录和有效的错误调试方法,帮助开发者提高问题诊断与解决能力。
|
3月前
|
C++
spdlog 日志库部分源码说明——日志格式设定,DIY你自己喜欢的调试信息,你能调试的远比你想象的还要丰富
spdlog 日志库部分源码说明——日志格式设定,DIY你自己喜欢的调试信息,你能调试的远比你想象的还要丰富
147 6
|
2月前
|
JavaScript
【vue】 将Vue2中的console.log()调试信息移除
【vue】 将Vue2中的console.log()调试信息移除
116 0
|
2月前
|
SQL
关于ThinkPHP5.1+的Log无法记录SQL调试记录的小经历
项目开发阶段,除了基本编码外,性能也需要实时关注与优化。之前我的大部分项目都是使用ThinkPHP5.0以及ThinkPHP3.2,对于框架提供的日志记录和日志配置都差不多,然后使用ThinkPHP5.1的时候就吃瘪,花了十几分钟才好,所以写一下防止后面忘记了再踩坑。
86 0
|
3月前
|
SQL 运维 关系型数据库
|
3月前
|
监控 PHP 开发者
PHP中的异常处理与错误日志记录
【6月更文挑战第9天】本文深入探讨了PHP编程语言中异常处理的机制和错误日志记录的策略。我们将通过具体实例来展示如何有效地捕获和处理运行时错误,以及如何利用PHP的错误日志功能来监控和维护代码的健康状态。
29 0