Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Rotua Panjaitan
yii2
Commits
ec64132a
Commit
ec64132a
authored
Feb 03, 2015
by
Nobuo Kihara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs/guide-ja/runtime - reviewed [ci skip]
parent
84976bd7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
34 deletions
+26
-34
runtime-handling-errors.md
docs/guide-ja/runtime-handling-errors.md
+9
-10
runtime-logging.md
docs/guide-ja/runtime-logging.md
+17
-24
No files found.
docs/guide-ja/runtime-handling-errors.md
View file @
ec64132a
...
...
@@ -2,7 +2,7 @@
==========
Yii は、エラー処理を従来よりはるかに快適な経験にしてくれる、内臓の
[
[yii\web\ErrorHandler|エラーハンドラ
]
] を持っています。
具体的には、Yii のエラーハンドラはエラー処理を
向上させ
るために、次のことを行います。
具体的には、Yii のエラーハンドラはエラー処理を
より良くす
るために、次のことを行います。
*
致命的でない全ての PHP エラー (警告や通知) は捕捉可能な例外に変換されます。
*
例外と致命的な PHP エラーは、デバッグモードでは、詳細なコールスタック情報とソースコード行とともに表示されます。
...
...
@@ -46,8 +46,8 @@ try {
// 実行を継続 ...
```
ユーザに対して、リクエストが無効であったり予期しないものであったりすることを
知らせるエラーページを表示したい場合は、単に
[
[yii\web\NotFoundHttpException
]
] のような
[
[yii\web\HttpException|HTTP 例外
]
] を投げるだけで済ませることが出来ます。
エラーハンドラがレスポンスの HTTP ステータスコードを正しく設定し、適切なエラービューを使ってエラーメッセージを表示してくれます。
リクエストが無効または予期しないものであることをユーザに
知らせるエラーページを表示したい場合は、単に
[
[yii\web\NotFoundHttpException
]
] のような
[
[yii\web\HttpException|HTTP 例外
]
] を投げるだけで済ませることが出来ます。
そうすれば、
エラーハンドラがレスポンスの HTTP ステータスコードを正しく設定し、適切なエラービューを使ってエラーメッセージを表示してくれます。
```
php
use
yii\web\NotFoundHttpException
;
...
...
@@ -59,8 +59,8 @@ throw new NotFoundHttpException();
## エラー表示をカスタマイズする <span id="customizing-error-display"></span>
[
[yii\web\ErrorHandler|エラーハンドラ
]
] は、定数
`YII_DEBUG`
の値に従って、エラー表示を調整します。
`YII_DEBUG`
が true である (デバッグモードである) 場合は、エラーハンドラは、デバッグがより容易になるように、
詳細なコールスタック情報とソースコード行とともに例外
を表示します。
そして、
`YII_DEBUG`
が false のときは、アプリケーションに関する公開できない情報
を開示すること
を防ぐために、エラーメッセージだけが表示されます。
`YII_DEBUG`
が true である (デバッグモードである) 場合は、エラーハンドラは、デバッグがより容易になるように、
例外とともに、詳細なコールスタック情報とソースコード行
を表示します。
そして、
`YII_DEBUG`
が false のときは、アプリケーションに関する公開できない情報
の開示
を防ぐために、エラーメッセージだけが表示されます。
> Info|情報: 例外が [[yii\base\UserException]] の子孫である場合は、`YII_DEBUG` の値の如何にかかわらず、コールスタックは表示されません。
これは、この種の例外はユーザの誤操作によって引き起こされるものであり、開発者は何も修正する必要がないと考えられるからです。
...
...
@@ -90,7 +90,7 @@ return [
```
[
[yii\web\ErrorHandler::errorAction|errorAction
]
] プロパティは、アクションへの
[
ルート
](
structure-controllers.md#routes
)
を値として取ります。
上記の構成は、エラーをコールスタック情報なしで表示する必要がある場合は、
`site/error`
アクションが実行されるべき
である
ことを記述しています。
上記の構成は、エラーをコールスタック情報なしで表示する必要がある場合は、
`site/error`
アクションが実行されるべきことを記述しています。
`site/error`
アクションは次のようにして作成することが出来ます。
...
...
@@ -133,17 +133,16 @@ public function actionError()
*
`name`
: エラーの名前。
*
`message`
: エラーメッセージ。
*
`exception`
: 例外オブジェクト。これを通じて、更に有用な情報、例えば、HTTP ステータスコード、
エラーコード、エラーコールスタックなどにアクセス出来ます。
*
`exception`
: 例外オブジェクト。これを通じて、更に有用な情報、例えば、HTTP ステータスコード、エラーコード、エラーコールスタックなどにアクセスすることが出来ます。
> Info|情報: あなたが [ベーシックアプリケーションテンプレート](start-installation.md) または [アドバンストアプリケーションテンプレート](tutorial-advanced-app.md) を使っている場合は、エラーアクションとエラービューは、既にあなたのために定義されています。
### エラーのレスポンス形式をカスタマイズする <span id="error-format"></span>
エラーハンドラは、
[
レスポンス
](
runtime-responses.md
)
の
形式の設定に従ってエラーを表示します。
エラーハンドラは、
[
レスポンス
](
runtime-responses.md
)
形式の設定に従ってエラーを表示します。
[
[yii\web\Response::format|レスポンス形式
]
] が
`html`
である場合は、直前の項で説明したように、エラービューまたは例外ビューを使ってエラーを表示します。
その他のレスポンス形式の場合は、エラーハンドラは例外の配列表現を
[
[yii\web\Response::data
]
] プロパティに代入し、次に
`data`
プロパティ
がレスポンス形式に応じて様々な形式に変換され
ます。
その他のレスポンス形式の場合は、エラーハンドラは例外の配列表現を
[
[yii\web\Response::data
]
] プロパティに代入し、次に
`data`
プロパティ
をレスポンス形式に応じて様々な形式に変換し
ます。
例えば、レスポンス形式が
`json`
である場合は、次のようなレスポンスになります。
```
...
...
docs/guide-ja/runtime-logging.md
View file @
ec64132a
...
...
@@ -2,12 +2,12 @@
========
Yii は高度なカスタマイズ性と拡張性を持った強力なロギングフレームワークを提供しています。
このフレームワークを使用すると、さまざまな種類のメッセージを記録し、フィルタして、ファイル、データベース、メー
ルなど
、さまざまなターゲットに収集することが簡単に出来ます。
このフレームワークを使用すると、さまざまな種類のメッセージを記録し、それをフィルタして、ファイル、データベース
、メールなど、
さまざまなターゲットに収集することが簡単に出来ます。
Yii のロギングフレームワークを使うためには、下記のステップを踏みます。
*
コードのさまざまな場所で
[
ログメッセージ
](
#log-messages
)
を記録する。
*
アプリケーションの構成情報で
[
ログターゲット
](
#log-targets
)
を構成して、ログメッセージをフィルタしてエクスポートする。
*
ログメッセージをフィルタしてエクスポートするために、アプリケーションの構成情報で
[
ログターゲット
](
#log-targets
)
を構成する。
*
さまざまなターゲット (例えば
[
Yii デバッガ
](
tool-debugger.md
)
) によって、フィルタされエクスポートされたログメッセージを調査する。
この節では、主として最初の二つのステップについて説明します。
...
...
@@ -17,7 +17,7 @@ Yii 縺ョ繝ュ繧ョ繝ウ繧ー繝輔Ξ繝シ繝繝ッ繝シ繧ッ繧剃スソ縺◆繧√↓縺ッ縲∽ク玖ィ倥繧ケ繝
ログメッセージを記録することは、次のログ記録メソッドのどれかを呼び出すだけの簡単なことです。
*
[
[Yii::trace()
]
]: コードの断片がどのように走るかをトレースす
るメ
ッセージを記録します。主として開発のために使用します。
*
[
[Yii::trace()
]
]: コードの断片がどのように走ったかをトレース
するメッ
セージを記録します。主として開発のために使用します。
*
[
[Yii::info()
]
]: 何らかの有用な情報を伝えるメッセージを記録します。
*
[
[Yii::warning()
]
]: 何か予期しないことが発生したことを示す警告メッセージを記録します。
*
[
[Yii::error()
]
]: 出来るだけ早急に調査すべき致命的なエラーを記録します。
...
...
@@ -48,8 +48,7 @@ Yii::trace('蟷ウ蝮庶逶翫險育ョ励r髢句ァ', __METHOD__);
> Info|情報: 上記で説明したメソッドは、実際には、[[yii\log\Logger|ロガーオブジェクト]] の [[yii\log\Logger::log()|log()]] メソッドへのショートカットです。
[
[yii\log\Logger|ロガーオブジェクト
]
] は
`Yii::getLogger()`
という式でアクセス可能なシングルトンです。
ロガーオブジェクトは、十分な量のメッセージが記録されたとき、または、アプリケーションが終了するときに、
[
[yii\log\Dispatcher|メッセージディスパッチャ
]
]
を呼んで、登録された
[
ログターゲット
](
#log-targets
)
に記録されたログメッセージを送信します。
ロガーオブジェクトは、十分な量のメッセージが記録されたとき、または、アプリケーションが終了するときに、
[
[yii\log\Dispatcher|メッセージディスパッチャ
]
] を呼んで、登録された
[
ログターゲット
](
#log-targets
)
に記録されたログメッセージを送信します。
## ログターゲット <span id="log-targets"></span>
...
...
@@ -59,8 +58,7 @@ Yii::trace('蟷ウ蝮庶逶翫險育ョ励r髢句ァ', __METHOD__);
例えば、
[
[yii\log\DbTarget|データベースターゲット
]
] は、フィルタされたログメッセージをデータベーステーブルにエクスポートし、
[
[yii\log\EmailTarget|メールターゲット
]
] は、ログメッセージを指定されたメールアドレスにエクスポートします。
一つのアプリケーションの中で複数のログターゲットを登録することが出来ます。
そのためには、次のように、
アプリケーションの構成情報の中で、
`log`
[
アプリケーションコンポーネント
](
structure-application-components.md
)
によってログターゲットを構成します。
そのためには、次のように、アプリケーションの構成情報の中で、
`log`
[
アプリケーションコンポーネント
](
structure-application-components.md
)
によってログターゲットを構成します。
```
php
return
[
...
...
@@ -81,7 +79,7 @@ return [
'message'
=>
[
'from'
=>
[
'log@example.com'
],
'to'
=>
[
'admin@example.com'
,
'developer@example.com'
],
'subject'
=>
'
Database errors at example.com
'
,
'subject'
=>
'
example.com で、データベースエラー発生'
,
],
],
],
...
...
@@ -96,7 +94,7 @@ return [
上記のコードでは、二つのログターゲットが
[
[yii\log\Dispatcher::targets
]
] プロパティに登録されています。
*
最初のターゲットは、エラーと警告のメッセージを選択して、データベーステーブルに保存します。
*
第二のターゲットは、名前が
`yii\db\` で始まるカテゴリの下のエラーメッセージを選
んで
、`
admin@example.com
` と `
developer@example.com
` の両方にメールで送信します。
*
第二のターゲットは、名前が
`yii\db\` で始まるカテゴリのエラーメッセージを選んで、`
admin@example.com
` と `
developer@example.com
` の両方にメールで送信します。
Yii は下記のログターゲットをあらかじめ内蔵しています。
その構成方法と使用方法を学ぶためには、これらのクラスの API ドキュメントを参照してください。
...
...
@@ -111,8 +109,7 @@ Yii 縺ッ荳玖ィ倥繝ュ繧ー繧ソ繝シ繧イ繝ヨ繧偵≠繧峨°縺倥a蜀鳩縺励※縺∪縺吶
### メッセージのフィルタリング <span id="message-filtering"></span>
全てのログターゲットについて、それぞれ、[[yii\log\Target::levels|levels]] と [[yii\log\Target::categories|categories]]
のプロパティを構成して、ターゲットが処理すべきメッセージの重要性レベルとカテゴリを指定することが出来ます。
全てのログターゲットについて、それぞれ、[[yii\log\Target::levels|levels]] と [[yii\log\Target::categories|categories]] のプロパティを構成して、ターゲットが処理すべきメッセージの重要性レベルとカテゴリを指定することが出来ます。
[[yii\log\Target::levels|levels]] プロパティは、次のレベルの一つまたは複数からなる配列を値として取ります。
...
...
@@ -133,13 +130,10 @@ Yii 縺ッ荳玖ィ倥繝ュ繧ー繧ソ繝シ繧イ繝ヨ繧偵≠繧峨°縺倥a蜀鳩縺励※縺∪縺吶
[[yii\log\Target::categories|categories]] プロパティを指定しない場合は、ターゲットが *全ての* カテゴリのメッセージを処理することを意味します。
カテゴリを [[yii\log\Target::categories|categories]] プロパティでホワイトリストとして登録する以外に、一定のカテゴリを [[yii\log\Target::except|except]]
プロパティによってブラックリストとして登録することも可能です。
カテゴリを [[yii\log\Target::categories|categories]] プロパティでホワイトリストとして登録する以外に、一定のカテゴリを [[yii\log\Target::except|except]] プロパティによってブラックリストとして登録することも可能です。
カテゴリの名前がこの配列にあるか、または配列にあるパターンに合致する場合は、メッセージはターゲットによって処理されません。
次のターゲットの構成は、ターゲットが、`
yii
\d
b
\*
` または `
yii
\w
eb
\H
ttpException:
*
`
に合致するカテゴリ名を持つエラーおよび警告のメッセージだけを処理すべきこと、ただし、`
yii
\w
eb
\H
ttpException:404
`
は除外すべきことを指定するものです。
次のターゲットの構成は、ターゲットが、`
yii
\d
b
\*
` または `
yii
\w
eb
\H
ttpException:
*
` に合致するカテゴリ名を持つエラーおよび警告のメッセージだけを処理すべきこと、ただし、`
yii
\w
eb
\H
ttpException:404
` は除外すべきことを指定するものです。
```php
[
...
...
@@ -193,7 +187,7 @@ Yii 縺ッ荳玖ィ倥繝ュ繧ー繧ソ繝シ繧イ繝ヨ繧偵≠繧峨°縺倥a蜀鳩縺励※縺∪縺吶
メッセージ前置情報以外にも、ログターゲットは、一群のログメッセージごとに一定のコンテキスト情報を追加します。
デフォルトでは、その情報には、次のグローバル PHP 変数、すなわち、`
$_GET
`、`
$_POST
`、`
$_FILES
`、`
$_COOKIE
`、`
$_SESSION
` および `
$_SERVER
` の値が含まれます。
ログターゲットに含ませたいグローバル変数の名前を [[yii\log\Target::logVars]] プロパティに設定することによって、この動作を調整することが出来ます。
例えば、次のログターゲットの構成は、`
$_SERVER
` の値だけがログメッセージに追加されるよ
うに指定するものです。
例えば、次のログターゲットの構成は、`
$_SERVER
` の値だけをログメッセージに追加するよう
に指定するものです。
```php
[
...
...
@@ -263,8 +257,7 @@ return [
デフォルトの状態では、吐き出しとエクスポートの間隔の設定のために、`
Yii::trace()
` やその他のログ記録メソッドを呼んでも、ただちには、ログメッセージはログターゲットに出現しません。
このことは、長時間にわたって走るコンソールアプリケーションでは、問題になる場合もあります。
各ログメッセージがただちにログターゲットに出現するようにするためには、下記のように、[[yii\log\Dispatcher::flushInterval|flushInterval]]
と [[yii\log\Target::exportInterval|exportInterval]] の両方を 1 に設定しなければなりません。
各ログメッセージがただちにログターゲットに出現するようにするためには、下記のように、[[yii\log\Dispatcher::flushInterval|flushInterval]] と [[yii\log\Target::exportInterval|exportInterval]] の両方を 1 に設定しなければなりません。
```php
return [
...
...
@@ -295,7 +288,8 @@ return [
Yii::$app->log->targets['file']->enabled = false;
```
上記のコードを使うためには、下記のように、`
targets
` の配列で文字列のキーを使って、ターゲットを `
file
` という名前にする必要があります。
上記のコードでは、ターゲットが `
file
` という名前であることが必要とされています。
下記のように、`
targets
` の配列で文字列のキーを使ってターゲットの名前を指定して下さい。
```php
return [
...
...
@@ -318,7 +312,7 @@ return [
### 新しいターゲットを作る <span id="new-targets"></span>
新しいログターゲットを作ることは非常に単純なことです。
新しいログターゲットを作ることは非常に簡単です。
必要なことは、主として、[[yii\log\Target::messages]] 配列の中身を指定された媒体に送出する [[yii\log\Target::export()]] メソッドを実装することです。
各メッセージに書式を設定するためには、[[yii\log\Target::formatMessage()]] を呼ぶことが出来ます。
詳細については、Yii リリースに含まれているログターゲットクラスのどれか一つを参照してください。
...
...
@@ -342,7 +336,7 @@ return [
ここで `
myBenchmark
` はコードブロックを特定するユニークなトークンを表します。
後でプロファイリング結果を検査するときに、このトークンを使って、対応するコードブロックによって消費された時間を調べます。
`
beginProfile
` と `
endProfile
` のペアが適正な入れ子になっているように確認することは、非
常に重要なことです。
`
beginProfile
` と `
endProfile
` のペアが適正な入れ子になっていることを確認することが非常
に重要なことです。
例えば、
```php
...
...
@@ -357,8 +351,7 @@ return [
\Yii::endProfile('block1');
```
`
\Y
ii::endProfile('block1')
` を忘れたり、`
\Y
ii::endProfile('block1')
` と `
\Y
ii::endProfile('block2')
`
の順序を入れ替えたりすると、パフォーマンスプロファイリングは機能しません。
`
\Y
ii::endProfile('block1')
` を忘れたり、`
\Y
ii::endProfile('block1')
` と `
\Y
ii::endProfile('block2')
` の順序を入れ替えたりすると、パフォーマンスプロファイリングは機能しません。
プロファイルされるコードブロックの全てについて、おのおの、重大性レベルが `
profile
`
であるログメッセージが記録されます。
そのようなメッセージを集めてエクスポートする
[
ログターゲット
](
#log-targets
)
を構成してください。
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment