目次
PSR-3ログインターフェース仕様に従う
例外情報を自動的に記録する
目標は何ですか?
; configuration for php SeasLog moduleextension = seaslog.soseaslog.default_basepath = /log/seaslog-test            ;默认log根目录seaslog.default_logger = default                        ;默认logger目录seaslog.disting_type = 1                                ;是否以type分文件 1是 0否(默认)seaslog.disting_by_hour = 1                             ;是否每小时划分一个文件 1是 0否(默认)seaslog.use_buffer = 1                                  ;是否启用buffer 1是 0否(默认)seaslog.buffer_size = 100                               ;buffer中缓冲数量 默认0(不使用buffer_size)seaslog.level = 0                                       ;记录日志级别 默认0(所有日志)seaslog.trace_error = 1                                 ;自动记录错误 默认1(开启)seaslog.trace_exception = 0                             ;自动记录异常信息 默认0(关闭)seaslog.default_datetime_format = "%Y:%m:%d %H:%M:%S"   ;日期格式配置 默认"%Y:%m:%d %H:%M:%S"
ログイン後にコピー
" >
; configuration for php SeasLog moduleextension = seaslog.soseaslog.default_basepath = /log/seaslog-test            ;默认log根目录seaslog.default_logger = default                        ;默认logger目录seaslog.disting_type = 1                                ;是否以type分文件 1是 0否(默认)seaslog.disting_by_hour = 1                             ;是否每小时划分一个文件 1是 0否(默认)seaslog.use_buffer = 1                                  ;是否启用buffer 1是 0否(默认)seaslog.buffer_size = 100                               ;buffer中缓冲数量 默认0(不使用buffer_size)seaslog.level = 0                                       ;记录日志级别 默认0(所有日志)seaslog.trace_error = 1                                 ;自动记录错误 默认1(开启)seaslog.trace_exception = 0                             ;自动记录异常信息 默认0(关闭)seaslog.default_datetime_format = "%Y:%m:%d %H:%M:%S"   ;日期格式配置 默认"%Y:%m:%d %H:%M:%S"
ログイン後にコピー
ホームページ バックエンド開発 PHPチュートリアル SeasLog-1.5.3 リリース、軽量で効率的な PHP ログ拡張機能

SeasLog-1.5.3 リリース、軽量で効率的な PHP ログ拡張機能

Jun 23, 2016 pm 01:11 PM

SeasLog-1.5.3 リリース、バグ修正バージョン、軽量で効率的な PHP ログ拡張。

改善ログ:

- PHP7 の zval_ptr_dtor のバグを修正しました。 - 問題 #68 を修正しました。 getDetail 関数で _ を修正しました。 - 問題 #73 を修正しました。

- Datetime Format Config をサポートしました。 SeasLog

log ログを使用します。これは通常、システム、ソフトウェア、またはアプリケーションの実行記録です。ログ分析を通じて、ユーザーはシステム、ソフトウェア、およびアプリケーションの動作状況を簡単に理解できます。アプリケーション ログが十分に充実している場合は、過去のユーザーの動作動作、タイプの設定、地理的分布などの詳細な情報も分析できます。アプリケーションのログも複数のレベルに分割されているため、アプリケーションの健全性状態を簡単に分析し、タイムリーに問題を発見し、問題を迅速に特定して解決し、損失を修復することができます。

PHP の組み込み error_log 関数と syslog 関数は強力で優れたパフォーマンスを持っていますが、さまざまな欠陥 (error_log にはエラー レベルがなく、固定フォーマットがない、syslog はモジュールに分割されておらず、システム ログと混在している) があるため、柔軟性が低くなります。が大幅に削減され、アプリケーションのニーズを満たすことができなくなります。

良いニュースは、log4php、plog、Analog など、上記の欠点を補うサードパーティのログ ライブラリが多数あることです (もちろん、プロジェクトで使用される独自開発のログ クラスも多数あります)。 。その中で、log4php が最も有名で、優れたデザイン、完璧なフォーマット、完全なドキュメント、強力な機能を備えています。推薦する。

ただし、log4php のパフォーマンスは非常に低く、下の図は SeasLog と log4php の同時パフォーマンス テストです (テスト環境: Ubuntu12.04 スタンドアロン、CPU I3、メモリ 16G、ハードディスク SATA 7200)。

それでは、この種のログ ライブラリは次のニーズを満たします:

モジュールとレベルに分割されている
  • 構成が簡単 (できれば構成は必要ありません)
  • 明確で簡単ログ形式の読み取り
  • シンプルなアプリケーションと高性能 素晴らしい
  • SeasLog は、このニーズに応えて生まれました。
現在提供されているもの

PHPプロジェクトでの便利で標準化されたログ記録
  • 設定可能なデフォルトのログディレクトリとモジュール

  • ログディレクトリを指定して現在の設定を取得する

  • Prelimin分析分析 早期警告フレームワーク

  • 効率的な​​ログバッファリング、便利なバッファデバッグ

  • PSR-3ログインターフェース仕様に従う

  • エラー情報を自動的に記録する

  • 例外情報を自動的に記録する

  • 目標は何ですか?

    便利で標準化されたログ記録

効率的な​​大規模ログ分析
  • 設定可能なマルチチャネルログ警告
  • インストール
  • SeasLogのコンパイルとインストール

    $ /path/to/phpize$ ./configure --with-php-config=/path/to/php-config$ make && make install
    ログイン後にコピー

    PECLのインストール SeasLog
  • $ pecl install seaslog
    ログイン後にコピー
seaslog.ini の設定

; configuration for php SeasLog moduleextension = seaslog.soseaslog.default_basepath = /log/seaslog-test            ;默认log根目录seaslog.default_logger = default                        ;默认logger目录seaslog.disting_type = 1                                ;是否以type分文件 1是 0否(默认)seaslog.disting_by_hour = 1                             ;是否每小时划分一个文件 1是 0否(默认)seaslog.use_buffer = 1                                  ;是否启用buffer 1是 0否(默认)seaslog.buffer_size = 100                               ;buffer中缓冲数量 默认0(不使用buffer_size)seaslog.level = 0                                       ;记录日志级别 默认0(所有日志)seaslog.trace_error = 1                                 ;自动记录错误 默认1(开启)seaslog.trace_exception = 0                             ;自动记录异常信息 默认0(关闭)seaslog.default_datetime_format = "%Y:%m:%d %H:%M:%S"   ;日期格式配置 默认"%Y:%m:%d %H:%M:%S"
ログイン後にコピー

seaslog.disting_type = 1 タイプによるファイル分割、つまりログファイルの区別を有効にする infowarnerro

seaslog.disting_by_hour = 1 1 時間ごとのファイル分割を有効にする

seaslog.use_buffer = 1 バッファを有効にする。デフォルトではオフです。このオプションをオンにすると、ログはメモリに事前に保存され、リクエストが終了したとき (または異常終了したとき) に一度ファイルに書き込まれます。

定数と関数

定数リスト

* SEASLOG_DEBUG                       "debug"* SEASLOG_INFO                        "info"* SEASLOG_NOTICE                      "notice"* SEASLOG_WARNING                     "warning"* SEASLOG_ERROR                       "error"* SEASLOG_CRITICAL                    "critical"* SEASLOG_ALERT                       "alert"* SEASLOG_EMERGENCY                   "emergency"var_dump(SEASLOG_DEBUG,SEASLOG_INFO,SEASLOG_NOTICE);/*string('debug') debug级别string('info')  info级别string('notice') notice级别*/
ログイン後にコピー

関数リスト

SeasLog は、ルート ディレクトリ、モジュール ディレクトリ、高速書き込み、統計ログを簡単に取得および設定できる一連の関数を提供します。 次の疑似コードのコメントから関数情報をすぐに取得できると思います。具体的な使用法は次のとおりです。

<?php/** * @author neeke@php.net * Date: 14-1-27 下午4:47 */class SeasLog{    public function __construct()    {        #SeasLog init    }    public function __destruct()    {        #SeasLog distroy    }    /**     * 设置basePath     *     * @param $basePath     *     * @return bool     */    static public function setBasePath($basePath)    {        return TRUE;    }    /**     * 获取basePath     *     * @return string     */    static public function getBasePath()    {        return 'the base_path';    }    /**     * 设置模块目录     * @param $module     *     * @return bool     */    static public function setLogger($module)    {        return TRUE;    }    /**     * 获取最后一次设置的模块目录     * @return string     */    static public function getLastLogger()    {        return 'the lastLogger';    }    /**     * 设置DatetimeFormat配置     * @param $format     *     * @return bool     */    static public function setDatetimeFormat($format)    {        return TRUE;    }    /**     * 返回当前DatetimeFormat配置格式     * @return string     */    static public function getDatetimeFormat()    {        return 'the datetimeFormat';    }    /**     * 统计所有类型(或单个类型)行数     * @param string $level     * @param string $log_path     * @param null   $key_word     *     * @return array | long     */    static public function analyzerCount($level = 'all', $log_path = '*', $key_word = NULL)    {        return array();    }    /**     * 以数组形式,快速取出某类型log的各行详情     *     * @param        $level     * @param string $log_path     * @param null   $key_word     * @param int    $start     * @param int    $limit     * @param        $order     *     * @return array     */    static public function analyzerDetail($level = SEASLOG_INFO, $log_path = '*', $key_word = NULL, $start = 1, $limit = 20, $order = SEASLOG_DETIAL_ORDER_ASC)    {        return array();    }    /**     * 获得当前日志buffer中的内容     *     * @return array     */    static public function getBuffer()    {        return array();    }    /**     * 将buffer中的日志立刻刷到硬盘     *     * @return bool     */    static public function flushBuffer()    {        return TRUE;    }    /**     * 记录debug日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function debug($message, array $content = array(), $module = '')    {        #$level = SEASLOG_DEBUG    }    /**     * 记录info日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function info($message, array $content = array(), $module = '')    {        #$level = SEASLOG_INFO    }    /**     * 记录notice日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function notice($message, array $content = array(), $module = '')    {        #$level = SEASLOG_NOTICE    }    /**     * 记录warning日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function warning($message, array $content = array(), $module = '')    {        #$level = SEASLOG_WARNING    }    /**     * 记录error日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function error($message, array $content = array(), $module = '')    {        #$level = SEASLOG_ERROR    }    /**     * 记录critical日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function critical($message, array $content = array(), $module = '')    {        #$level = SEASLOG_CRITICAL    }    /**     * 记录alert日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function alert($message, array $content = array(), $module = '')    {        #$level = SEASLOG_ALERT    }    /**     * 记录emergency日志     *     * @param        $message     * @param array  $content     * @param string $module     */    static public function emergency($message, array $content = array(), $module = '')    {        #$level = SEASLOG_EMERGENCY    }    /**     * 通用日志方法     * @param        $level     * @param        $message     * @param array  $content     * @param string $module     */    static public function log($level, $message, array $content = array(), $module = '')    {    }}
ログイン後にコピー

SeasLog Logger の使用法 (詳細なドキュメント)

健康警告に SeasLog を使用する

警告の設定

[base]wait_analyz_log_path = /log/base_test[fork];是否开启多线程 1开启 0关闭fork_open = 1;线程个数fork_count = 3[warning]email[smtp_host] = smtp.163.comemail[smtp_port] = 25email[subject_pre] = 预警邮件 -email[smtp_user] = seaslogdemo@163.comemail[smtp_pwd] = seaslog#demoemail[mail_from] = seaslogdemo@163.comemail[mail_to] = gaochitao@weiboyi.comemail[mail_cc] = ciogao@gmail.comemail[mail_bcc] =[analyz]; enum; SEASLOG_DEBUG      "debug"; SEASLOG_INFO       "info"; SEASLOG_NOTICE     "notice"; SEASLOG_WARNING    "warning"; SEASLOG_ERROR      "error"; SEASLOG_CRITICAL   "critical"; SEASLOG_ALERT      "alert"; SEASLOG_EMERGENCY  "emergency"test1[module] = test/bbtest1[level] = SEASLOG_ERRORtest1[bar] = 1test1[mail_to] = gaochitao@weiboyi.comtest2[module] = 222test2[level] = SEASLOG_WARNINGtest3[module] = 333test3[level] = SEASLOG_CRITICALtest4[module] = 444test4[level] = SEASLOG_EMERGENCYtest5[module] = 555test5[level] = SEASLOG_DEBUG
ログイン後にコピー

crontab 構成

;每天凌晨3点执行0 3 * * * /path/to/php /path/to/SeasLog/Analyzer/SeasLogAnalyzer.php
ログイン後にコピー

デモ:

<?php/** * @author ciogao@gmail.com * Date: 14-1-27 下午4:41 */  SeasLog::log(SEASLOG_ERROR,'this is a error test by ::log');SeasLog::debug('this is a {userName} debug',array('{userName}' => 'neeke'));SeasLog::info('this is a info log');SeasLog::notice('this is a notice log');SeasLog::warning('your {website} was down,please {action} it ASAP!',array('{website}' => 'github.com','{action}' => 'rboot'));SeasLog::error('a error log');SeasLog::critical('some thing was critical');SeasLog::alert('yes this is a {messageName}',array('{messageName}' => 'alertMSG'));SeasLog::emergency('Just now, the house next door was completely burnt out! {note}',array('{note}' => 'it`s a joke'));echo "\n";
ログイン後にコピー

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

See all articles