DBContorller3

本文介绍了一种用于记录业务异常和消息的日志系统实现方法。该系统通过使用PreparedStatement来执行SQL插入操作,将异常信息及消息记录到数据库中。此外,还提供了一个配置开关以控制是否启用日志记录。
private boolean insertExceptionLog(EsbRequest request) {
// esb_business_exception(oid,err_code,err_type,err_info)
if (!isWriteLog(true))
return false;

PreparedStatement stmt = null;
int result = 0;

try {
log.info(insert_ex_log.toString());
stmt = this.conn.prepareStatement(insert_ex_log.toString());

int i = 1;
// oid,businessid,transactionid,moduleid,servernumber,operator,
// areaid,starttime,endtime,is_long_flow,esb_version,status,err_type
stmt.setLong(i++, Long.parseLong(request.getOid()));
stmt.setString(i++, request.getErrCode());
stmt.setString(i++, request.getErrType());
stmt.setBytes(i++, request.getErrInfo().getBytes());

result = stmt.executeUpdate();

} catch (SQLException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
log.error("SQL Err(insertExceptionLog):" + e);
throw new BaseException(e);
} finally {
DBTools.close(stmt);
}

return (result == 1) ? true : false;
}

private void insertMsgLog(String oid, java.util.List<MsgBO> list)
throws IOException {
if (list == null)
return;

if (!isWriteLog(false))
return;

PreparedStatement stmt = null;

try {
log.info(insert_msg_log.toString());
stmt = this.conn.prepareStatement(insert_msg_log.toString());

for (Object element : list) {

MsgBO bo = (MsgBO) element;

int i = 1;
stmt.setLong(i++, Long.parseLong(oid));
stmt.setString(i++, bo.getSender());
stmt.setString(i++, bo.getRecevier());
stmt.setShort(i++, Short.parseShort(bo.getMsgType()));

stmt.setString(i++, bo.getMsg());

stmt.executeUpdate();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
log.error("SQL Err(insertMsgLog):" + e);
throw new BaseException(e);
} finally {
DBTools.close(stmt);
}

}

/**
* @return
*/
private boolean isWriteLog(boolean exFlag) {
String dbFlag = Configuration.getProperty("WRITEDB");

if ("0".equals(dbFlag)) {
return false;
} else if ("1".equals(dbFlag)) {
return true;
} else if ("2".equals(dbFlag)) {
return exFlag;
}

return false;
}

protected StringBuffer insert_esb_log = new StringBuffer(
"insert into esb_business_log")
.append("(oid,businessid,transactionid,moduleid,servicenumber,operator,areaid,departmentid,remotehost,starttime,endtime,is_long_flow,esb_version,status,err_type)")
.append(" values(?,?,?,?,?,?,?,?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,?,?,?)");

protected StringBuffer insert_ex_log = new StringBuffer(
"insert into esb_business_exception").append(
"(oid,err_code,err_type,err_info)").append(" values(?,?,?,?)");

protected StringBuffer insert_msg_log = new StringBuffer(
"insert into esb_business_msg").append(
" (oid,sender,recevier,msgtype,message)").append(
" values(?,?,?,?,?)");



}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值