Audit Trail Add in ojs Application

Describe the issue or problem
i want to add user action activity like Username ipaddress user login attempt user login or faild . Information insert in Database

Steps I took leading up to the issue
First On LoginHandler.php page chnage

Ojs Version:
, OJS 3.3.0.11.Php version:7.4.10

i worked on this page

function signIn($args, $request) {
$servername = Config::getVar(‘database’, ‘host’);
$username = Config::getVar(‘database’, ‘username’);
$password = Config::getVar(‘database’, ‘password’);
$dbname = Config::getVar(‘database’, ‘name’);

	$conn = new mysqli($servername, $username, $password, $dbname);
	//$enc = base64_decode($request->getUserVar('password'));
	if(strpos($request->getUserVar('password'), $_COOKIE['captcha_txt']) === false){
		$new_password = $request->getUserVar('password');
	}else{
		$pass_ex = explode('.$%55R*', $request->getUserVar('password'));
		$finalpass = explode('*&asgfER**',$pass_ex[1]);
		$new_password = base64_decode($finalpass[0]);
	}
	$this->setupTemplate($request);
	if (Validation::isLoggedIn()) $this->sendHome($request);

	if (Config::getVar('security', 'force_login_ssl') && $request->getProtocol() != 'https') {
		// Force SSL connections for login
		$request->redirectSSL();
	}

if($_COOKIE[‘captcha_txt’] == $_POST[‘captcha_code’]){
$user = Validation::login($request->getUserVar(‘username’), $request->getUserVar(‘password’), $reason, $request->getUserVar(‘remember’) == null ? false : true);
if ($user !== false) {

		$sql = "INSERT INTO audit_trail (ip_address, login_status, username, action_type) VALUES ('".getenv('REMOTE_ADDR')."', 'Successfull Login', '".$request->getUserVar('username')."', '".$_SERVER['REQUEST_METHOD']."')";
			$conn->query($sql);
			$conn->close();



		if ($user->getMustChangePassword()) {
			// User must change their password in order to log in
			Validation::logout();
			$request->redirect(null, null, 'changePassword', $user->getUsername());

		} else {

			if ($conn->query($sql) === TRUE) {
				    echo "New record created successfully";
				} else {
				    echo "Error: " . $sql . "<br>" . $conn->error;
				}





			$source = $request->getUserVar('source');
			$redirectNonSsl = Config::getVar('security', 'force_login_ssl') && !Config::getVar('security', 'force_ssl');
			if (preg_match('#^/\w#', $source) === 1) {
				$request->redirectUrl($source);
			}
			if ($redirectNonSsl) {
				$request->redirectNonSSL();
			} else {
				$this->_redirectAfterLogin($request);
			}

}

	} else {

		$sql = "INSERT INTO audit_trail (ip_address, login_status, username, action_type) VALUES ('".getenv('REMOTE_ADDR')."', 'Invalid Credentials', '".$request->getUserVar('username')."', '".$_SERVER['REQUEST_METHOD']."')";
			$conn->query($sql);
			$conn->close();



		$sessionManager = SessionManager::getManager();
		$session = $sessionManager->getUserSession();
		$templateMgr = TemplateManager::getManager($request);
		$templateMgr->assign(array(
			'username' => $request->getUserVar('username'),
			'remember' => $request->getUserVar('remember'),
			'source' => $request->getUserVar('source'),
			'showRemember' => Config::getVar('general', 'session_lifetime') > 0,
			'error' => $reason===null?'user.login.loginError':($reason===''?'user.login.accountDisabled':'user.login.accountDisabledWithReason'),
			'reason' => $reason,
		));
		$templateMgr->display('frontend/pages/userLogin.tpl');
	}
}
else {
			$sql = "INSERT INTO audit_trail (ip_address, login_status, username, action_type) VALUES ('".getenv('REMOTE_ADDR')."', 'Captch Incorrect', '".$request->getUserVar('username')."', '".$_SERVER['REQUEST_METHOD']."')";
			$conn->query($sql);
			$conn->close();

		$sessionManager = SessionManager::getManager();
		$session = $sessionManager->getUserSession();
		$templateMgr = TemplateManager::getManager($request);
		$templateMgr->assign(array(
			'username' => $request->getUserVar('username'),
			'remember' => $request->getUserVar('remember'),
			'source' => $request->getUserVar('source'),
			'showRemember' => Config::getVar('general', 'session_lifetime') > 0,
			'error' => $reason===null?'user.login.loginCaptcha':($reason===''?'user.login.accountDisabled':'user.login.accountDisabledWithReason'),
			'reason' => 'The Validation code does not match!',
		));
		$templateMgr->display('frontend/pages/userLogin.tpl');

	}

}