日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

java 异常管理员_GitHub - kangZan/JCatch: Exception异常管理平台,支持Java、PHP、Python等多种语言...

發布時間:2023/12/1 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 异常管理员_GitHub - kangZan/JCatch: Exception异常管理平台,支持Java、PHP、Python等多种语言... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是JCatch

當程序發生異常(Exception),處理方式一般是通過日志文件記錄下來,這種方式很容易被忽略,而且查詢起來比較麻煩。

JCatch提供了一種方案,當程序發生異常時,通過JCatch平臺接口提交到JCatch平臺,由JCatch平臺統一管理所有異常,這樣可以方便查詢,并且JCatch平臺提供異常監控功能,當應用程序發生異常時會以郵件方式提醒相關人員。

應用列表:

應用配置:

異常列表:

Java異常詳情:

PHP異常:

郵件通知:

運行/部署JCatch

MySQL數據庫

使用MySQL數據庫執行doc/sql.sql中的SQL腳本創建表

修改src/main/resources/MyBatis.xml文件中的數據庫連接

配置登錄管理員賬戶

默認管理員賬戶: 用戶名 admin 密碼 xxg

管理員登錄基于Spring Security實現,可以配置src/main/resources/springSecurity.xml文件

支持郵件訂閱功能

郵件訂閱功能會在應用發生異常時,每小時發送一封郵件給應用訂閱者,郵件內容為這個小時內的異常信息,配置src/main/resources/messageService.xml支持郵件訂閱

打包

mvn package命令生成war包,可部署在Tomcat、Jetty等服務器中

運行MyBatis Generator生成代碼

如果二次開發需要修改表結構, 修改src/main/resources/generatorConfig.xml文件中的數據庫連接, com.xxg.jcatch.mbg包下代碼是通過MyBatis Generator自動生成的,可以運行mvn mybatis-generator:generate命令生成代碼

API

提交一條Exception

URL: http://[your baseUrl]/api/submitExceptionJson?appId=[your appId]

請求類型: POST

請求Body:

{

"fileName": "Main.java",

"methodName": "main",

"className": "com.xxg.jcatch.Main",

"stackTrace": "java.lang.ArithmeticException: / by zero\n\tat com.xxg.jcatch.Main.main(Main.java:16)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)\n",

"message": "/ by zero",

"lineNumber": 16,

"exceptionName": "java.lang.ArithmeticException"

}

響應Body:

{

"success": true

}

客戶端接入

Java

PHP

通用

function submitToJCatch($e) {

$json = json_encode($e);

$ch = curl_init('http:///api/submitExceptionJson?appId=');

curl_setopt_array($ch, array(

CURLOPT_POST => TRUE,

CURLOPT_RETURNTRANSFER => TRUE,

CURLOPT_HTTPHEADER => array(

'Content-Type: application/json'

),

CURLOPT_POSTFIELDS => $json,

CURLOPT_CONNECTTIMEOUT => 2,

CURLOPT_TIMEOUT => 4,

));

curl_exec($ch);

}

function error_handler($errno, $errstr, $errfile, $errline) {

submitToJCatch(array(

'message' => $errstr,

'fileName' => $errfile,

'lineNumber' => $errline,

));

}

function exception_handler($exception) {

submitToJCatch(array(

"fileName" => $exception->getFile(),

"lineNumber" => $exception->getLine(),

"stackTrace" => $exception->getTraceAsString(),

"message" => $exception->getMessage(),

"exceptionName" => get_class($exception)

));

}

set_error_handler("error_handler");

set_exception_handler("exception_handler");

PHP的錯誤和異常會通過set_error_handler、set_exception_handler指定的函數來處理,一般PHP框架都會有自己的一套錯誤處理機制,如果使用PHP框架建議通過框架本身的錯誤處理機制來提交錯誤到JCatch,下面有各個框架接入JCatch的方法。

Laravel

修改App/Exceptions/Handler.php文件:

public function report(Exception $exception)

{

$appId = '';

$submitUrl = 'http:///api/submitExceptionJson?appId=' . $appId;

$data = json_encode([

"fileName" => $exception->getFile(),

"lineNumber" => $exception->getLine(),

"stackTrace" => $exception->getTraceAsString(),

"message" => $exception->getMessage(),

"exceptionName" => get_class($exception)

]);

$ch = curl_init($submitUrl);

curl_setopt_array($ch, array(

CURLOPT_POST => TRUE,

CURLOPT_RETURNTRANSFER => TRUE,

CURLOPT_HTTPHEADER => array(

'Content-Type: application/json'

),

CURLOPT_POSTFIELDS => $data,

CURLOPT_CONNECTTIMEOUT => 2,

CURLOPT_TIMEOUT => 4,

));

curl_exec($ch);

return parent::report($exception);

}

CodeIgniter 3.x

在application/core目錄下新建文件MY_Exceptions.php,代碼如下:

class MY_Exceptions extends CI_Exceptions

{

public function log_exception($severity, $message, $filepath, $line)

{

parent::log_exception($severity, $message, $filepath, $line);

$json = json_encode(array(

"message" => $message,

"fileName" => $filepath,

"lineNumber" => $line

));

$ch = curl_init('http:///api/submitExceptionJson?appId=');

curl_setopt_array($ch, array(

CURLOPT_POST => TRUE,

CURLOPT_RETURNTRANSFER => TRUE,

CURLOPT_HTTPHEADER => array(

'Content-Type: application/json'

),

CURLOPT_POSTFIELDS => $json,

CURLOPT_CONNECTTIMEOUT => 2,

CURLOPT_TIMEOUT => 4,

));

curl_exec($ch);

}

}

當發生錯誤或異常時,CI框架會自動調用以上代碼,將異常信息提交到JCatch API。

Yii 1.1

在protected/components目錄下新建文件ErrorHandler.php,代碼如下:

class ErrorHandler extends CErrorHandler

{

public $jcatchBaseUrl;

public $jcatchAppId;

public $jcatchSecretKey;

protected function handleException($exception)

{

parent::handleException($exception);

$this->submitToJCatch(array(

"fileName" => $exception->getFile(),

"lineNumber" => $exception->getLine(),

"stackTrace" => $exception->getTraceAsString(),

"message" => $exception->getMessage(),

"exceptionName" => get_class($exception)

));

}

protected function handleError($event)

{

parent::handleError($event);

$this->submitToJCatch(array(

'message' => $event->message,

'fileName' => $event->file,

'lineNumber' => $event->line,

));

}

private function submitToJCatch($e) {

$json = json_encode($e);

$ch = curl_init($this->jcatchBaseUrl.'/api/submitExceptionJson?appId='.$this->jcatchAppId);

curl_setopt_array($ch, array(

CURLOPT_POST => TRUE,

CURLOPT_RETURNTRANSFER => TRUE,

CURLOPT_HTTPHEADER => array(

'Content-Type: application/json'

),

CURLOPT_POSTFIELDS => $json,

CURLOPT_CONNECTTIMEOUT => 2,

CURLOPT_TIMEOUT => 4,

));

curl_exec($ch);

}

}

修改所使用的配置文件,例如protected/config/main.php:

'errorHandler'=>array(

'errorAction'=>'site/error',

'class'=>'ErrorHandler',

'jcatchBaseUrl'=>'',

'jcatchAppId'=>'',

'jcatchSecretKey'=>'',

),

當發生錯誤或異常時,Yii框架會自動調用ErrorHandler來處理異常,將異常信息提交到JCatch API。

總結

以上是生活随笔為你收集整理的java 异常管理员_GitHub - kangZan/JCatch: Exception异常管理平台,支持Java、PHP、Python等多种语言...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。