Yii は、柔軟でスケーラブルなロギング機能を提供します。記録されたログは、ログレベルや情報分類ごとに分類できます。レベルとカテゴリのフィルターを使用すると、選択した情報をファイル、電子メール、ブラウザ ウィンドウなどのさまざまな宛先にさらにルーティングできます。
1. 情報の記録
情報は Yii::log または Yii::trace を通じて記録できます。違いは、後者はアプリケーションがデバッグ モードで実行されている場合にのみ情報をログに記録することです。
Yii::log($message, $level, $category); Yii::trace($message, $category);
情報を記録する場合、カテゴリとレベルを指定する必要があります。カテゴリは、パスのエイリアスに似た形式の文字列です。 たとえば、メッセージが CController に記録されている場合、分類として system.web.CController を使用できます。情報レベルは次の値のいずれかである必要があります:
trace: これは Yii::trace で使用されるレベルです。開発中にプログラムの実行フローを追跡するために使用されます。
info: 通常の情報を記録するために使用されます。
Yii Framework 公式チュートリアル補足 45 - 特別トピック: ロギング: 公演概要(プロフィール)です。詳細な手順は後ほど説明します。
warning: これは警告メッセージに使用されます。
error: これは致命的なエラー メッセージに使用されます。
2. 情報ルーティング
Yii::log または Yii::trace を通じて記録された情報はメモリに保存されます。 通常、それらをブラウザ ウィンドウに表示するか、ファイルや電子メールなどの永続ストレージに保存する必要があります。これは、たとえば、情報をさまざまな宛先に送信することを 情報ルーティング と呼びます。
Yii では、情報ルーティングは CLogRouter と呼ばれるアプリケーションコンポーネントによって管理されます。 ログルーティングと呼ばれる一連のことを管理します。各ログ ルートは個別のログの宛先を表します。ログ ルートを通じて送信されたメッセージは、レベルとカテゴリによってフィルタリングされます。
メッセージ ルーティングを使用するには、CLogRouter アプリケーション コンポーネントをインストールしてプリロードする必要があります。また、必要なログ ルートのルート属性を設定する必要があります。 以下のコードは、必要なアプリケーション構成の例を示しています。
array( ...... 'preload'=>array('log'), 'components'=>array( ...... 'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( array( 'class'=>'CFileLogRoute', 'levels'=>'trace, info', 'categories'=>'system.*', ), array( 'class'=>'CEmailLogRoute', 'levels'=>'error, warning', 'emails'=>[email protected]', ), ), ), ), )
上の例では、2 つのログ ルートを定義しました。 1 つ目は CFileLogRoute で、アプリケーションのランタイム ディレクトリにあるファイルに情報を保存します。 また、レベル トレースまたはシステムで始まる情報とカテゴリを含む情報のみが保存されます。 2 番目のルートは CEmailLogRoute で、指定された電子メール アドレスに情報が送信され、エラーまたは警告のレベルのみが送信されます。
Yii では、次のログルートが利用可能です:
CDbLogRoute: 情報をデータベース内のテーブルに保存します。
CEmailLogRoute: 指定された電子メール アドレスに情報を送信します。
CFileLogRoute: アプリケーションのランタイム ディレクトリ内のファイルに情報を保存します。
CWebLogRoute: 現在のページの下部に情報を表示します。
CProfileLogRoute: ページの下部にプロファイリング情報を表示します。
情報: 情報ルーティングは、現在のリクエスト サイクルの最後の onEndRequest イベントがトリガーされたときに発生します。 現在のリクエスト プロセスを明示的に終了するには、die() や exit() を使用する代わりに CApplication::end() を呼び出してください。これは、情報がスムーズに記録されるように CApplication::end() が onEndRequest イベントをトリガーするためです。
3. メッセージ フィルタリング
前述したように、メッセージはログ ルーターに送信される前にレベルとカテゴリによってフィルタリングできます。 これは、対応するログ ルートのレベルとカテゴリの属性を設定することによって行われます。 複数のレベルまたはカテゴリはカンマで接続する必要があります。
情報の分類はxxx.yyy.zzz形式に似ているので、分類レベルとみなすことができます。 具体的には、xxx は xxx.yyy の親であり、xxx.yyy は xxx.yyy.zzz の親であると言います。 このようにして、xxx.* を使用して、カテゴリ xxx とそのすべての子および孫カテゴリを表すことができます。
4. コンテキスト情報を記録する
バージョン 1.0.6 以降では、PHP の事前定義変数 ($_GET、$_SERVER など)、セッション ID、ユーザー名などの追加のコンテキスト情報を記録するように設定できます。 これは、ログ ルートの CLogRoute::filter 属性で適切なログ フィルタリング ルールを指定することによって実現されます。
框架使用非常方面的可以用于大多数日志过滤的CLogFilter,默认情况下, CLogFilter 将会记录一条包含变量(如通常包含系统上下文变量值的如$_GET,$_SERVER等)的信息。CLogFilter还可以用于配置到每一个日志信息之前,带上session ID,用户名等。当我们要查找日志信息的位置时这将带来极大的便利 。
下面的配置展示了如何开启记录上下文信息。每一个日志路由都有自己的日志过滤器,但是默认情况下, 日志路由并不包含日志过滤器。
array( ...... 'preload'=>array('log'), 'components'=>array( ...... 'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( array( 'class'=>'CFileLogRoute', 'levels'=>'error', 'filter'=>'CLogFilter', ), ...other log routes... ), ), ), )
从版本1.0.7开始,Yii支持记录通过调用Yii::trace返回的日志记录信息中的回调栈信息。这一特性默认是取消的,因为这回降低性能。想要使用这一特性,只需在入口脚本中定义一个名为YII_TRACE_LEVEL的大于0的常量 (在包含yii.php之前),然后Yii将会在每一个trace信息之后加上应用代码回调栈的文件名和行号。 YII_TRACE_LEVEL 决定了每一个回调栈的层级将会被记录。这个信息在开发期间很有用,因为这可以帮助我们确定触发trace信息的位置。
5. 性能分析
性能分析是一个特殊的日志记录类型。性能分析可以用于衡量指定代码块的运行时间,并且找出性能瓶颈。
使用性能分析,我们需要指定被分析的代码块。我们通过插入如下代码来标记每一个代码块的开始和结束:
Yii::beginProfile('blockID'); ...code block being Yii Framework 公式チュートリアル補足 45 - 特別トピック: ロギングd... Yii::endProfile('blockID');
其中blockID 指的是代码块的唯一标志符.
注意, 代码块需要被合理嵌套。也就是说,一个代码块不能和另一代码块交叉嵌套:要么是并行的,要么是完全封闭包含在另一个代码块里。
为了显示分析结果, 需要安装 一个包含CProfileLogRoute日志路由的CLogRouter 应用组件。这和我们处理其他的信息路由一样,CProfileLogRoute路由将会在当前页面的底部显示性能分析结果。
6. SQL执行分析
性能分析在处理数据库操作时尤为有用,因为 SQL 执行经常是一个应用主要的性能瓶颈。 我们当然可以在每一次SQL执行的地方插入beginProfile 和 endProfile语句, 从版本1.0.6开始, 但Yii 提供了一个更加系统的方式来解决这个问题。
通过在应用配置中设置 CDbConnection::enableProfiling 为true, 每一个被执行的SQL语句都会被分析. 结果可以通过设置前面提到的CProfileLogRoute来显示, 这样我们就能知晓每一个SQL语句的执行时间。除此之外我们还可以调用CDbConnection::getStats() 来取回SQL语句执行的次数和总的执行时间。
以上就是Yii框架官方教程增补版45——专题:日志记录的内容,更多相关内容请关注PHP中文网(www.php.cn)!

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ホットトピック









