it-swarm-ko.tech

플러그인 (cron) 작업을 어떻게 기록합니까?

플러그인에서 cron 작업을 기록 (권장하지 않음) 할 수있는 방법이 있습니까? 예를 들어 매 시간마다 외부 서비스와 동기화되는 플러그인이 있습니다. 동기화가 실패했을 때 얼마만큼 변경되었는지 기록하고 싶습니다. 여기서 무엇을 권하고 싶습니까? 새 데이터베이스 테이블? Log Deprecated Notices plugin은 사용자 정의 게시 유형을 사용하여 이것을 수행하지만 이것은 너무 많은 오버 헤드 일 수 있습니다. 나는 믿는다 WordPress에 표준 로깅 패키지가 없다 ?

6
Jan Fabry
  1. 파일 사용 이벤트를 쓰십시오. 여기에는 몇 가지 단점이 있습니다.

    • 파일 시스템 권한 . 앱을 배포 할 때는 웹 서버에 파일 쓰기 권한을 부여해야합니다. 그리고 더 확실하게, 당신은 파일에 쓸 수 있는지 여부를 검사하고 할 수 없을 때 경고를 발행하는 코드를 작성해야합니다. 이로 인해 복잡성이 증가하고 배포 문제의 원인 일 수 있습니다.
    • 사고 삭제 . 실수로 사용자 정의 로그 파일을 삭제하고 레코드를 잃을 수 있습니다. 불편할 수 있습니다.
    • 사용자 정의 로그 형식 . 이벤트를 파일에 쓰려면 커스텀 (machine readable?) 텍스트 형식이 필요합니다. 로그 형식을 변경해야 할 경우 이전 레코드를 마이그레이션하는 편리한 방법이 없습니다. 로그에 대해 어떤 종류의 분석을 수행하려면 레코드를 구문 분석해야합니다. 이로 인해 더 많은 코드와 복잡성이 발생합니다. 복잡성이 나쁘다.
  2. 데이터베이스 테이블 사용. 자신의 데이터베이스 테이블을 작성하고 거기에 이벤트를 기록하십시오. 위에 나열된 단점은 적용되지 않습니다. 많은 복잡성을 추가하지 않습니다. 플러그인 후크를 사용하여 테이블 생성 및 삭제를 자동화하면 상당히 안정적인 로그 시스템이 있다고 생각합니다.

  3. 이메일 보내기. 로그의 관련성에 따라이 방법을 항상 선택할 수 있습니다. 어쨌든 실패 할 경우 이메일을 보내려고한다고 생각합니다.

  4. OS 로거 사용. PHP에서 syslog 함수를 사용하면 시스템 로거 (UNIX의 syslog, Windows NT의 이벤트 로그)에 이벤트를 쓸 수 있습니다. 사용자 정의 syslog를 구성하면 배포가 복잡해집니다.

마지막으로; 일반적인 경우 예외 또는 예외 만 기록하려는 경우 고려해야합니다. Jeff Atwood는 이것에 대해 좋은 writeup 를 수행했습니다.

이것이 도움이되기를 바랍니다!

6
Wietse Venema

this 와 같은 로깅 기능을 사용하면 wp-config.php를 다음과 같이 구성하여 debug.log에 로그 아웃 할 수 있습니다. here :

/**
 * This will log all errors notices and warnings to a file called debug.log in
 * wp-content (if Apache does not have write permission, you may need to create
 * the file first and set the appropriate permissions (i.e. use 666) ) 
 */
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

이것은 적어도 디버깅/개발 목적으로 작동해야합니다 (생산 로깅에 얼마나 훌륭한 지 잘 모르겠지만 개발을 위해 작동합니다).

6
leeand00

나는이 데이터를 wp_posts에 넣으면 잠재적으로 테이블을 관리 할 수없는 크기로 빠르게 확장시킬 수 있다고 동의한다. 테이블을 만드는 것이 좋습니다. 나는 여분 마일을 가고 누군가가 그들의 플러그 접속 식 사용 중지하는 경우에있는 로그 테이블을 청소하는 방법을 줄 것입니다.

나는 테이블을 만드는 플러그인을 두려워하지 않지만 WordPress 데이터베이스를 8,000,000 개의 wp_term_relationships 레코드와 300,000 개의 게시물로 보았 기 때문에 그 경험이 얼마나 불쾌한 지 알 수 있습니다.

dbDelta()register_activation_hook() 는 귀하의 친구가 될 것입니다. 플러그인으로 테이블 만들기 를 참조하십시오.

2
Annika Backstrom