일반적인 로그 오브젝트 인터페이스 인 PSR-3을 통해 개발자는 특정 로그 구현에 의존하지 않고 재사용 가능한 코드를 작성하여 PHP의 다른 로그 라이브러리 간의 호환성을 향상시킬 수 있습니다.
Monolog, Symfony 및 Mustache.php를 포함한 많은 주요 PHP 프로젝트가 PSR-3에 대한 지원을 추가했습니다. 코드 재사용의 장벽을 줄이면 더 많은 라이브러리와 프레임 워크가 로깅을 올바르게 사용할 것으로 예상되어 개발자에게 유용한 정보를 제공합니다. log()
AbstractLogger
psr-3 빠른 시작 emergency
- 심각한 상황
alert
- 정상이지만 중요한 이벤트 critical
- 디버깅에 대한 세부 사항 warning
파일의 예입니다.
notice
PHP에는 데이터를 수집하고 기록하는 방법이 각각 다양한 로그 라이브러리가 있습니다. 그들은 약간의 공통점이 있지만 각 라이브러리에는 고유 한 로깅 방법 세트가 있습니다. 즉, 로그 사이를 전환하는 것은 어려울 수 있으며, 종종 로깅이 사용되는 곳마다 코드를 변경해야합니다. 이것은 코드 재사용 및 객체 지향 설계의 견고한 원리와 상반됩니다. 우리가 직면 한 상황은 특정 로그 라이브러리에 대한 종속성을 선언하거나 전체 로그인을 피하는 것입니다. 이 문제를보다 명확하게 설명하기 위해서는 구체적인 예가 필요합니다. 전자 메일 전송을 처리하기 위해 간단한 메일러 개체를 작성한다고 가정 해 봅시다. 우리는 이메일을 보낼 때마다 Mailer가 메시지를 로그인하기를 원하며, 우수 독백 라이브러리를 사용하여 벌목 요구를 처리하기로 결정했습니다. info
debug
메소드가 없기 때문에 이제 문제가 있습니다. 아날로그를 사용하여 정보 수준 메시지를 녹음하려면
)에 대한 공통 인터페이스를 제공하여 로깅 구현의 비 호환성을 극복하도록 설계되었습니다. PSR-3을 사용하면 특정 로거에 의존하지 않는 인터페이스를 제공함으로써 PSR-3 호환 로거를 얻으려면 프롬프트를 입력 할 수 있습니다. 다음을 보여주기 위해 다음 메일러 클래스를 업데이트했습니다.
<🎜 🎜> 생성자는 구현자를 수락하도록 수정되었으며 <🎜 🎜> 메소드는 이제 psr-3에 지정된 <🎜 🎜> 메소드를 호출합니다. 독백은 이미 PSR-3을 준수하고 아날로그는
메소드는 단순히
결론 (Fotolia의 그림)
(PSR-3 로깅의 FAQ 부분은 공간 제한으로 인해 여기에서 생략됩니다. 필요에 따라 추가 할 수 있습니다.){
"require": {
"psr/log": "dev-master"
}
}
LoggerInterface
LoggerInterface
<🎜 🎜> <<> psr-3 <🎜 🎜 <?php namespace Email;
class Mailer
{
private $logger;
public function __construct($logger)
{
$this->logger = $logger;
}
public function sendEmail($emailAddress)
{
// 发送电子邮件的代码...
// 记录消息
$this->logger->addInfo("Email sent to $emailAddress");
}
}
LoggerInterface
메소드로 전달합니다. <<> 클래스를 확장하고 자신의 <🎜 🎜> 메소드를 정의함으로써 PSR-3을 기본적으로 지원하지 않는 로거에 대한 PSR-3 호환 어댑터를 쉽게 만들 수 있습니다. Klogger에 대한 간단한 어댑터를 만들어 아래에서 이것을 시연 할 것입니다 : sendEmail()
.{
"require": {
"psr/log": "dev-master"
}
}
log()
메소드를 해당 Klogger 메소드에 매핑하고 Klogger는 실제 로깅 활동을 처리합니다. Klogger 클래스를 이런 식으로 마무리함으로써 LoggerInterface
계약을 중단하지 않고 사용할 수 있습니다. 이제 메일러 클래스와 함께 Klogger 어댑터를 사용할 수 있습니다.
LoggerInterface
<?php namespace Email;
class Mailer
{
private $logger;
public function __construct($logger)
{
$this->logger = $logger;
}
public function sendEmail($emailAddress)
{
// 发送电子邮件的代码...
// 记录消息
$this->logger->addInfo("Email sent to $emailAddress");
}
}
LoggerInterface
LoggerInterface
이 기사에서는 PSR-3을 사용하여 특정 로깅 구현에 의존하지 않는 로거가없는 코드를 작성하는 방법을 배웠습니다. 많은 주요 PHP 프로젝트는 독백, Symfony 및 Mustache.php를 포함한 PSR-3에 대한 지원을 추가했으며 Drupal과 같은 다른 잘 알려진 프로젝트는이를 가장 잘 통합하는 방법에 대해 논의하고 있습니다. PSR-3은 코드 재사용의 장벽을 줄이기 때문에 더 많은 라이브러리와 프레임 워크가 로깅을 올바르게 사용하여 개발자에게 유용한 정보를 제공해야합니다. PSR-3이 애플리케이션에서 로깅을 사용하는 방법에 영향을 미칩니 까? 아래 의견 섹션에 알려주십시오.
위 내용은 PHP 마스터 | 재사용 성을 향상시키기 위해 PSR-3으로 로깅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!