Silex 프레임 워크를 사용하여이 웹 애플리케이션을 개발 중이며 데이터베이스 (mysql)에 다른 사용자 활동/이벤트를 저장하고 싶습니다. 사용자 로그인, 로그 아웃, 콘텐츠 작성, 콘텐츠 업데이트 등 이 로그의 목적은 특정 날짜에 시간을 거슬러 올라가는 것입니다. ID가 2 인 사용자가 2 번 로그인 한 상태에서 2 개의 새 xx를 만들고 3xx를 업데이트했습니다.사용자 활동 로거의 좋은 구조 정의하기
데이터베이스에 저장하려는 각 이벤트에 대해 로그인 한 사용자의 userId, 이벤트 (예 : 로그인 문자열) 및 이벤트 URL을 저장하려고합니다. https://mydomain.dev/login. 그런데 어떻게 돌아갈 수 있니? 네, 또한 CURRENT_TIMESTAMP 디폴트 테이블을 생성했습니다.
나는이 로거 클래스를 어느 방향으로 만들어야할지 고집합니다. 현재 LoggerInterface가 있으며 여기에는 정적 로그 기능이 정의되어 있습니다.
interface LoggerInterface
{
public static function log(LogEvent $logEvent);
}
지금 내 질문은 다양한 활동을 만드는 데 가장 적합한 방법은 무엇일까요?
는abstract class LogEvent {
protected $type;
protected $url;
}
처럼 내 예를 들어, 내 유형을 각 이벤트에 대한 클래스를 정의 할 수 있습니다이 방법을 로그 이벤트의 특성을 보유하고 추상 LOGEVENT 클래스 만들기 LoginLogEvent 클래스 :
class LoginLogEvent extends LogEvent
{
protected $type = 'login';
}
이 같은 유형을 정의하는 방법은 좋은 방법이나 나는 내가 예를 추적 할 내 모든 활동을 정의 어디 상수 파일을 작성해야한다는 것입니다 내 LoginLogEvent 클래스의 다음
class LogEvents
{
const LOGIN = "login";
}
: 나는 또한이 라인을 따라 생성자를 만들 수
class LoginLogEvent extends LogEvent
{
protected $type = LogEvents::LOGIN;
}
: 뭔가를 기록 할 경우에 대한
class LoginLogEvent extends LogEvent
{
protected $type;
protected $url;
public function __construct($type, $url){
$this->type= $type;
$this->url= $url;
}
}
좋은 물건하지만 무엇을 .. 아마 LogHandler 클래스를 다음과 같이 만들 수 있습니다 :
class LogHandler implements LoggerInterface
{
public static function log(LogEvent $logEvent)
{
// TODO: Implement log() method.
}
}
그럼 $ logEvent-> type에 스위치 케이스를 만들고 기본적으로 이벤트 유형 인 URL을 데이터베이스에 씁니다.
감사합니다 좋은 주말 : 렉스는 이미 Monolog는 당신이 필요로하는 모든 기능을 제공하기위한 지원을하고있다
이봐, 고마워, 분명히해볼 께! –