ホームページ  >  記事  >  バックエンド開発  >  log4php0.9の詳細な設定例

log4php0.9の詳細な設定例

WBOY
WBOYオリジナル
2016-06-13 13:04:04746ブラウズ

log4php0.9
の詳細な設定例の説明

1. log4php とは:
Log4j は、Apche 用のプロジェクトを編成および管理するもので、現在、log4php が使用されています。 log4j のコンポーネントとしてサブプロジェクトが存在します。詳細については、http://logging.apache.org/log4php/ をクリックしてください。また、Brother VxR の公式 log4php メイン Web サイトも参照してください。 www.vxr.it/log4php/。興味のある方は、上記の 2 つの URL を直接クリックして詳細情報をご覧ください。
ダウンロード アドレス: http://www.vxr.it/log4php/download.html

2. インストール:
この記事のダウンロード バージョンは log4php-0.9.tar.gz です。解凍されたディレクトリに src ディレクトリがあります。{unzipped directory}/src/log4php/ ディレクトリをプロジェクトにコピーします。ディレクトリに移動してインストールを完了します。この記事は log4php の説明に使用するため、関係のないディレクトリはリストされておらず、プロジェクト構造は次のように定義されています:
+app/
+ log4php
+ Images/
+ logs/
+ js/
+ css/
- log4php.properties
- Index.php

3. 使用を開始します:
最も単純なものから始めて、test1.php の内容を見てみましょう:
[php]
/*1*/定義 (LOG4PHP_DIR, "log4php");

/*2*/ require_once(LOG4PHP_DIR . '/LoggerManager.php');

/*3*/ $str = "これがテスト文字列です!";

/*4*/ echo "これは PHP の出力です。log4php とは関係ありません!
";

/*5*/ $logger = LoggerManager::getLogger('test');

/*6*/ if ("" != $str) {
$logger->debug("str の値は空ではありません。その値は次のとおりです: " . $str . " }

/*7*/ if (strlen($str) > 4) {
$logger->debug("str の長さは 4 を超えています!" . "
");
}

/*8*/ LoggerManager::shutdown();
?>
[/php]

プログラムは非常に簡単です。各タグの機能を見てみましょう。
1. LOG4PHP_DIR ディレクトリ名を log4php として定義します。これは、ディレクトリ構造内の log4php ディレクトリです。
2. LoggerManager が含まれます。プログラムで使用されるメイン クラスは、ステップ 5 でこのクラスを使用します
3. テスト用の文字列 $str を定義します。ロガーのデバッグ情報を生成するための条件判断。
4. これは PHP の出力を表します。PHP プログラムの出力とロガーの出力情報の違いを区別するために、最初にここに情報を出力します。
5. LoggerManager クラスの getLogger() 静的メソッドを通じてロガー クラスを取得します。この情報は通常、異なるロガー レコードを区別するために使用されます。 test として定義することもできますが、test1、test2...
6 と定義することもできます。$str が空でない場合は、デバッグ情報を出力します。$str の長さが 4 を超える場合は、デバッグ情報を出力します。 、デバッグ情報を出力します
OK、それでは http://localhost/test1.php を実行しましょう。いいえ、出力ステートメントは 4 つだけで、デバッグ情報はありません。どうしたの?その理由は、log4php 構成ファイルをまだセットアップしていないためです。ここに簡単な設定ファイルがあります。コードは次のとおりです:
[php]
log4php.rootLogger=DEBUG, A1
log4php.appender.A1=LoggerAppenderEcho
log4php.appender.A1 .layout =LoggerLayoutSimple
[/php]
これらのコードの意味については心配する必要はありません。app ディレクトリに新しい log4php.properties ファイルを作成し、上記のコードをこのファイルにコピーして保存します。
注:
1. このファイルのファイル名は log4php.properties である必要があります。間違って書かないでください。
2. このファイルは、index.php と同じレベル、つまり、アプリディレクトリ

OK、このステップを実行した後、http://localhost/test1.php の実行を続けます。

この時点で、次のコードが表示されます:
[php]
これが PHP の出力です。 、log4php とは関係ありません!
DEBUG - str の値は空ではありません!その値は次のとおりです!
DEBUG - str の長さが 4 より大きいです! php]
参照 ここで、なぜ上記の 2 つの注意点があるのか​​と疑問に思う人もいるかもしれません。同時に、便宜上、ファイル名を log4.txt に変更したいと思います。たとえば、プロジェクト内に特別な設定ファイル ディレクトリ config/ を配置する必要があります。 log4.txt を config/ ディレクトリに置きます。OK、これを行う場合は、test1.php の 1 の後にステートメントを追加する必要があります:
[php]
define (LOG4PHP_CONFIGURATION, "/config/log4.txt") );
[/php]
log4php のプロパティ ファイルはプロパティ形式を使用するため、ここで説明する必要があります。この形式は通常、JAVA では拡張子 .properties を持つため、引き続き log4 を使用します。拡張子 .txt は次のとおりです。より一般的な log4.properties に変更されました。 Log4php は XML 形式で定義された設定ファイルもサポートしていますが、一般に、XML ファイルは読みにくいため、ここではプロパティ形式の設定ファイルを使用します。

さて、以下の高度な内容を見てみましょう。実行後のページを見てみましょう。これは、echo と何ら変わりません。最初に理由を知る必要はありません。 log4.properties の項目。log4php.appender.A1.layout の値が LoggerLayoutSimple から LoggerLayoutHtml に変更されています。 http://localhost/test1.php を実行して確認してください。この件を見るのに長い時間を費やしてしまい、申し訳ありません。この設定ファイルの使い方については、後のいわゆる高度な使い方で詳しく説明します。構成ファイルを通じて、ファイルへのログの書き込みなど、より高度な機能を使用できます。

4. 高度な使い方:
Log4php は、ログ情報の優先順位、ログ情報の出力先、ログ情報の出力形式の 3 つの重要なコンポーネントで構成されています。ログ情報の優先順位は、高い順に ERROR、WARN、INFO、DEBUG があり、それぞれログ情報の重要度を指定します。ログ情報の出力先は、ログを末尾に追加するかどうかを指定します。実行ファイルまたはファイルへの出力形式により、ログ情報の表示内容が制御されます。
1. ログの優先順位。ログ情報には 4 つのカテゴリがあります (一般的に使用されます)。レベルは WARN レベルに調整され、エラー情報 ($log->error("error message here!") 経由) およびプログラム内に表示される WARN レベル情報を記録でき、すべての INFO および DEBUG レベル情報をこの文は、デバッグ レベルを DEBUG レベルとして定義することを意味します。レベルが INFO に設定されている場合は、ERROR、WARN、INFO の情報のみが表示されます。

一般的に使用される 4 つのレベルは次のとおりです。

DEBUG レベルは、きめの細かい情報イベントがアプリケーションのデバッグに非常に役立つことを示しています。
INFO レベルは、メッセージがアプリケーションの実行プロセスを大まかなレベルで強調表示することを示します。
WARN レベルは、潜在的なエラー状況を示します。
ERROR レベルは、エラー イベントが発生しても、システムの継続的な動作には影響しないことを示します。
FATAL レベルは、重大なエラー イベントが発生するたびにアプリケーションが終了することを示します。

2. ログ情報の出力先。 log4php では 12 種類の出力先がサポートされています。

[php]
1. LoggerAppenderConsole は php://stdout を出力先として受け取ります
2. LoggerAppenderDailyFile は LoggerAppenderFile を継承し、ファイルを出力先として受け取ります。出力先。毎日ファイルを出力します
3. LoggerAppenderDb は出力場所として使用します
4. LoggerAppenderEcho は実行ファイルの最後に出力します
5. LoggerAppenderFile は出力場所として使用します
>6. LoggerAppenderMail は出力場所として電子メールを使用します
7. LoggerAppenderMailEvent は LoggerAppenderMail を継承し、出力場所としてメールを使用し、イベントをトリガーします
8. LoggerAppenderNull: 情報を出力しません
9. PHP エラー情報を出力し、さまざまなログ レベル情報を PHP 標準情報に変換します
10. LoggerAppenderRollingFile: LoggerAppenderFile から継承され、xxx.log.1、xxx.log.2、
11 の形式で出力されます。ソケットモードで出力
12. LoggerAppenderSyslog: システム内 ログは出力先に出力され、php
[/php]
の syslog() 関数を使用して記録されます。

は、構成ファイルでは「log4php.rootLogger=DEBUG, A1」として表示されます。2 番目のパラメーターから始まるエイリアスは、

[php]
log4php.appender.A1= LoggerAppenderEcho によって設定されます。
log4php.appender.A1.layout=LoggerLayoutHtml
[/php]
は、実際のニーズに応じて複数の出力先が実装されており、パフォーマンスは次のようになります。
log4php.rootLogger=DEBUG, A1, A2, A3, ....
ここで、A1、A2、A3 は異なる出力先を表します。

3. ログファイルの出力形式。 Log4php には出力先の属性として存在します。
[php]
1. LoggerLayoutHtml: デバッグ情報を HTML 形式で出力します。
2. シンプルに表示されます。 「レベル情報 - ログ情報」の形式
3. LoggerLayoutTTCC: 「月/日/年時刻[プロセス]レベル情報ログ名 - デバッグ情報」の形式で表示されます
4. LoggerPatternLayout: パターン式が出力形式として表示されます (この機能は非常に強力です。出力形式を自由に設定できます。これについては例のセクションで詳しく説明します)
5. LoggerXmlLayout: XML モードで出力
[ /php]

ここでのいわゆる高度な使用法は、log4php の設定ファイルの使用です。関数の使用法について説明するたびに、サンプル ファイルが表示されます。ここでは、デバッグ用に、いくつかの一般的な出力先を例として説明します。詳細については、log4php 解凍ディレクトリ内の test ディレクトリを参照してください。

1. LoggerAppenderEcho: 定義方法:
[php]
log4php.appender.A1=LoggerAppenderEcho
log4php.appender.A1.layout=LoggerLayoutHtml
[/php]
log4php.appender は固定形式です。A1 は出力場所のエイリアスを表します。log4php.appender.A1 は出力場所です。ここに直接エコーがあります。log4php.appender.A1.layout は直接エコーの形式を定義します。値には 5 つの出力形式があります。現在の設定は、HTML を使用してデバッグ情報を出力することを意味します。A1 のレイアウトが LoggerLayoutHtml として構成されている場合、定義できる追加のパラメーターが 2 つあります (ここでのパラメーターは設定を参照していることに注意してください)。 LoggerLayoutHmtl の値を変更しません。 LoggerAppenderEcho の場合、出力先のパラメータを設定するのではなく、出力形式のパラメータを設定します。
1. locationInfo: ローカル情報を出力します。値は boolean
2. title: を出力します。 HTMLのタイトル名、またHTMLのに名前を出力する、文字列

完全な構成例は次のとおりです:
[php]
log4php.rootLogger=DEBUG, A1

log4php.appender.A1=LoggerAppenderEcho

log4php.appender.A1.layout=LoggerLayoutHtml
log4php.appender.A1.layout.locationInfo=true
log4php.appender.A1.layout.title=これはテスト インスタンス 1
[/php ]
このセクションの例は log_echo.php です。


2. LoggerAppenderFile:
定義形式:
[php]
log4php.appender.A1=LoggerAppenderFile
log4php.appender.A1.layout=LoggerLayoutHtml
[/php ]
同様に、出力先が File で、出力形式が loggerLayoutHtml であることを意味します。出力先が LoggerAppenderFile の場合、いくつかのパラメータを設定する必要があります。
1. file: 出力するファイル名、文字列。
2. append: 記録するたびにファイルの末尾に追加するかどうか。値は true の場合、元のデータは消去されません。 false の場合、元のレコードは消去されます。クリアされる。
完全な設定モードは次のとおりです:
[php]
log4php.rootLogger=DEBUG, A1

log4php.appender.A1=LoggerAppenderFile
log4php.appender.A1.file=logs/log4php_file.log.html
log4php.appender.A1.append=false

log4php.appender.A1.layout=LoggerLayoutHtml
log4php.appender.A1.layout.locationInfo=true
log4php.appender.A1.layout.title=これはテスト インスタンス 1
[/php ]
ここで A1.append を false に設定する必要があるのは明らかです。これが true の場合、HTML 情報全体が毎回ファイルに書き込まれることになります。ただし、log4php が中国語をあまりサポートしていないのが残念です。生成された HTML ファイルの中国語タイトルは正しいのですが、中国語のデバッグ情報がすべて文字化けしています。これに注意してください。
このセクションの例は log_file.php です。


3. LoggerAppenderDailyFile:
定義形式:
[php]
log4php.rootLogger=DEBUG, A1

log4php.appender.A1=LoggerAppenderDailyFile

log4php.appender.A1.layout=LoggerLayoutSimple
[/php]
log4php.appender.A1 の値を設定することで、時間ごとに出力するログ ファイルを使用し、最も単純な LoggerLayoutSimple を出力として選択しますLoggerAppenderDailyFile を出力先として選択する場合、次のパラメータを設定する必要があります:
1. file: 「ファイル名_%s.log」の形式で出力されるファイル名。末尾の %s は、を表します。添付される時刻。時刻の定義形式は次のパラメータです。
2. datePattern: 時刻形式。これは、現在の日付を文字列にフォーマットし、ファイル名の %s を置き換えることを意味します。
完全な設定パターンは次のとおりです。
[php]
log4php.rootLogger=DEBUG, A1

log4php.appender.A1=LoggerAppenderDailyFile
log4php.appender.A1.datePattern=Ymd
log4php.appender.A1.file=logs/log4php_dailyfile_%s.log
log4php.appender.A1.append =本当

log4php.appender.A1.layout=LoggerLayoutSimple
[/php]
出力形式は LoggerLayoutSimple です。つまり、「[レベル情報] - デバッグ情報」という単純な形式で記述します。
このセクションの例は log_dailyfile.php

です

4. LoggerAppenderRollingFile:
定義形式:
[php]
log4php.rootLogger=DEBUG, A1

log4php.appender.A1=LoggerAppenderRollingFile

log4php.appender.A1.layout=LoggerLayoutSimple
[/php]
は、ログファイルのサイズが定義された最大値を超えた場合に、古いログをバックアップし、新しいログを書き換えることを意味します。 🎜> を参照してください。関連パラメータを確認してください:
1. file: 出力されるファイル名の文字列タイプ
2. maxFileSize: ログ ファイル内の最大バイト数は次の形式です: value k
3. maxBackupIndex: シーケンスの最大数は、その後ろにある最大数値です。

完全な構成ファイルは次のとおりです:

[php]
log4php.rootLogger=DEBUG, A1

log4php.appender.A1=LoggerAppenderRollingFile

log4php.appender.A1.file=logs/log4php_rollingfile.log
log4php.appender.A1.maxFileSize=5KB
log4php.appender.A1.maxBackupIndex=5

log4php.appender.A1.layout=LoggerLayoutSimple
[/php]
ここでは、デモンストレーションのために maxFileSize を 5KB に調整しています。その他のオプションの単位は、実際の使用時に必要に応じて設定してください。 GB.
このセクションの例は log_rollingfile.php.

です。


5. LoggerPatternLayout 出力形式の詳細な説明:
ここでは、出力先が最も単純な LoggerAppenderEcho に設定されています:
完全な構成ファイル:
[php]
log4php.rootLogger=DEBUG, A1

log4php.appender.A1=LoggerAppenderEcho

log4php.appender.A1.layout=LoggerPatternLayout
log4php.appender.A1.layout.conversionPattern=%-5p %d %t %m in %F line %L%n
[/php]
conversionPattern のパラメータの機能は次のとおりです:
* c: 現在のロガー名、LoggerManager::getLogger($cateName) を通じて渡される $cateName 値
* C: 現在の完全なクラス名(生成されるログ情報のクラス、log4phpのクラス名)
* d: 現在時刻
* F: 現在のファイル名
* l: ログ情報を生成するクラス
* L: ログ情報を生成する行数ログ情報生成
* n: 改行
* m: デバッグ情報
* M: ログ情報を生成するメソッド名
* p: ログレベル情報
* r: 実行時間 (ms)
* t: ログ情報を生成するスレッド
* x: NDC (ネストされた診断コンテキスト)
* X: MDC (マップされた診断コンテキスト)
バージョン 0.9、%F、% にはバグがありますL が正しく動作しません 値を表示するには、log4phpspiLoggerLoggingEvent.php の 189 行目と 190 行目を変更するだけです:
[php]
189 $className = @$hop['class'];
190 if ( !empty($className) and ($className == 'logger' or get_parent_class($className) == 'logger') )
[/php]
次のように変更します:
[php ]
189 $className = @strto lower ($hop['class']);
190 if ( !empty($className) and ($className == 'logger' or $className == 'loggercategory' or get_parent_class($className) == 'logger' ) または get_parent_class($className) == 'loggercategory')
[/php]
(http://ipis007.spaces.live.com/blog から抜粋) /cns!75F0E4FEE274140B!1056.entry、オリジナルの作業では、エラー ファイルは LoggerLocationInfo.php ですが、実際には LoggerLoggingEvent.php である必要があります)


6. マルチ出力設定:
上記の知識を踏まえて、設定ファイル
[php]
log4php を見てみましょう。 .rootLogger=DEBUG、A1、A2

log4php.appender.A1=LoggerAppenderEcho
log4php.appender.A1.layout=LoggerPatternLayout
log4php.appender.A1.layout.conversionPattern="%-5p %l %d %c %t %m in %F 行 %L%n"

log4php.appender.A2=LoggerAppenderFile
log4php.appender.A2.file=logs/log4php_mutil.log
log4php.appender.A2.append=false
log4php.appender.A2.layout=LoggerPatternLayout
log4php.appender.A2.layout.conversionPattern="%-5p %l %d %c %t %m in %F line %L%n"
[/php]
誰でもできると思います上記の設定ファイルについては、余計なことは言いません。ここで、出力エイリアス A1 と A2 を次のように定義できます。


phpsa フレームワークにおける log4php の 5 つのアプリケーション
phpsa3.0 では、デバッグ用に log4php が統合され始めました。フレームワーク レベルのデバッグ情報レベルは、ユーザーでのログ情報の出力に使用できます。フレームワークの構造を理解するには、/comm/config/log4php.properties の log4php.rootLogger のプロパティを DEBUG に設定する必要があります。上位から下位は ERROR、WARN、INFO、DEBUG です。システムによって出力されるデバッグ情報を表示したくない場合は、デバッグ レベルを INFO に設定し、$this->logger->info(
phpsa フレームワークのほとんどのクラスでは、フレームワークの実行シーケンスを記録するために deub() ログ情報がオブジェクト クラスで初期化されます。実際の開発では、ログ出力のためにこの変数の値を true に設定し、パフォーマンスを向上させるために、フレームワークは config::IS_LOG を使用します。
Object のコンストラクター内 if ステートメントを使用してクラス ライブラリをロードおよび初期化することもできます:
[php]
if ($this->isLog) {
require_once ($_SERVER['DOCUMENT_ROOT' ] . "/comm/config /phpsaLogger.inc.php");
$this->logger = LoggerManager::getLogger($this->toString());
}
[/ php]
in user カスタム モジュールでは、次のように初期化できます。
if (Config::IS_LOG) {
$this->logger = LoggerManager::getLogger($this-> toString());
}
次のように呼び出します:
if (Config::IS_LOG) {
$this->logger->info("ここにデバッグ情報があります..." );
}

?

?

/*
//const LOG4PHP=true;
//const LOG4PHP_DEFAULT_INIT_OVERRIDE = true;
//const LOG4PHP_CONFIGURATION_FILE = ''; src/log4php');
定義 (LOG4PHP_CONFIGURATION, C_PATH . 'log4php.win.properties');
require_once (LOG4PHP_DIR . '/LoggerManager.php');

$logger = LoggerManager: :getLogger($category);
$logger->$level($msg);
*/

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