ํต์ฌ๋ก
newrelic_set_error_group_callback($callback)์ฌ์ฉ์ ์ ์๋ ํ๊ฑฐํ๋ฆฐํ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฅ๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค.
์๊ตฌ ์ฌํญ
์์ด์ ํธ ๋ฒ์  10.12 ์ด์.
์ค๋ช
์ด API๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ํธ์ถ๋๋ PHP ์์ด์ ํธ์ ์ฌ์ฉ์ ์ ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฑ๋กํ ์ ์์ต๋๋ค.
์ฝ๋ฐฑ์ ์์ด์ ํธ๋ก๋ถํฐ ๋ ๊ฐ์ PHP ๋ฐฐ์ด์ ์ ๊ณตํฉ๋๋ค. ํ๋๋ ํธ๋์ญ์  ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ ๋ค๋ฅธ ํ๋๋ ์ค๋ฅ ๋ฐ์ดํฐ๋ฅผ ํฌํจํฉ๋๋ค.
์ ๊ณต๋ ์ปจํ ์คํธ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฐฑ์ ์ค๋ฅ ๋ฐ์ ํธ์งํจ UI์ ํ์๋๋ ์ค๋ฅ ๊ทธ๋ฃน ์ด๋ฆ ์ญํ ์ ํ ์ฌ์ฉ์ ์ ์ ๋ ผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น์ด ์์ง ์์ ๋ฌธ์์ด์ ๋ฐํํด์ผ ํฉ๋๋ค.
์ค์
- ๋จ์ผ ํธ๋์ญ์ ์์ ์ด ํจ์์ ๋ํ ์ฌ๋ฌ ํธ์ถ์ด ์๋ ๊ฒฝ์ฐ PHP ์์ด์ ํธ๋ ๋ง์ง๋ง ํธ์ถ์ ์ฝ๋ฐฑ๋ง ์ ์งํฉ๋๋ค.
 - ์ฝ๋ฐฑ์ ์์ฒญ๋ณ๋ก ๋ฑ๋ก๋ฉ๋๋ค. ์ด API๋ ๊ฐ ์์ฒญ์ ๋ํด ์คํ์ด ๋ณด์ฅ๋๋ ์ฝ๋ ๊ฒฝ๋ก์์ ํธ์ถ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฝ๋ฐฑ์ด ํธ์ถ๋์ง ์์ต๋๋ค.
 - ์ฝ๋ฐฑ ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ ํ ์ต์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์ฝ๋ฐฑ(์: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ถ) ๋๋ ๊ธฐํ ๋ณต์กํ ๋ก์ง์ ์ ํ๋ฆฌ์ผ์ด์  ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
 
๋งค๊ฐ๋ณ์
์ด API๋ ๋จ์ผ ํจ์ ์ ํ ์ฝ๋ฐฑ์ ์ธ์๋ก ํ์ฉํฉ๋๋ค. ์ ๊ณต๋ ์ฝ๋ฐฑ์ 2๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค.
API ๋งค๊ฐ๋ณ์  | ์ค๋ช  | 
|---|---|
  | ํ์์. PHP ์์ด์ ํธ์ ๋ฑ๋กํ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค.  | 
์ฝ๋ฐฑ ๋งค๊ฐ๋ณ์  | ์ค๋ช  | 
|---|---|
  | ํ์์. PHP ์์ด์ ํธ๊ฐ ์ฝ๋ฐฑ์ ์ ๊ณตํ ํธ๋์ญ์  ๋ฐ์ดํฐ ๋ฐฐ์ด์ ๋๋ค.  | 
  | ํ์์. PHP ์์ด์ ํธ๊ฐ ์ฝ๋ฐฑ์ ์ ๊ณตํ ์ค๋ฅ ๋ฐ์ดํฐ ๋ฐฐ์ด์ ๋๋ค.  | 
๋ฐฐ์ด ํค/๊ฐ ์
$transaction_data - ์ฝ๋ฐฑ์ ์ ๊ณต๋๋ PHP ์์ด์ ํธ ํธ๋์ญ์
 ๋ฐ์ดํฐ
์ด์  | ๊ฐ  | 
|---|---|
"request_uri"  | (๋ฌธ์์ด) ์์ฒญ URI  | 
"๊ธธ"  | (๋ฌธ์์ด) ํ์ผ ๊ฒฝ๋ก  | 
"๋ฐฉ๋ฒ"  | (๋ฌธ์์ด) HTTP ๋ฉ์๋(  | 
"์ํ_์ฝ๋"  | (int) HTTP ์ํ ์ฝ๋(  | 
$error_data - ์ฝ๋ฐฑ์ ์ ๊ณต๋ PHP ์์ด์ ํธ ์ค๋ฅ ๋ฐ์ดํฐ
์ด์  | ๊ฐ  | 
|---|---|
"ํด๋์ค"  | (๋ฌธ์์ด) ํด๋์ค ์ด๋ฆ  | 
"๋ฉ์ธ์ง"  | (๋ฌธ์์ด) ์ค๋ฅ ๋ฉ์์ง  | 
"ํ์ผ"  | (๋ฌธ์์ด) ํ์ผ ๊ฒฝ๋ก  | 
"์คํ"  | (๋ฌธ์์ด) JSON ์ค๋ฅ ์ถ์  ์ถ์   | 
์ค์
- ๋ชจ๋ ํค์ ๊ฐ์ด ํฌํจ๋์ด ์๋ค๊ณ ๋ณด์ฅ๋๋ ๊ฒ์ ์๋๋๋ค. ์ด๋ ์ฌ์ฉ์ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ์ค๋ฅ์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๋๋ค.
 - ๋ฐฐ์ด ํค๋ ๋น ๊ฐ์ด ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ํญ์ ์ค์ ๋ฉ๋๋ค.
 
๋ฐํ ๊ฐ
API๋ ์ฝ๋ฐฑ์ด ์ฑ๊ณต์ ์ผ๋ก ๋ฑ๋ก๋๋ฉด true ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด false ๋ฐํํฉ๋๋ค.
์
if (extension_loaded('newrelic')) { // Ensure PHP agent is available  $callback = function(array $transaction_data, array $error_data)  {      $fingerprint = "";
      //      // Add custom code to parse array data      //
      // Example code      if ($error_data["klass"] == "E_USER_ERROR") {        $fingerprint = "USER ERROR";      };
      return $fingerprint;    // Non-empty string error group name  };
  newrelic_set_error_group_callback($callback);};