Javaweb记录日志到数据库和文件中

来源:互联网 发布:java个人信息管理系统 编辑:程序博客网 时间:2024/05/21 15:45

=============jsp页面===================
// 封装的js函数,可通用
/**
*title:标题
*content:详细内容
*target: 记录到哪里(1=数据库(default),2=文件,3=数据库+文件)
*type:日志种类(1=服务器运行日志(default),2=SQL日志,3=用户动作日志),
*level:日志等级(1=普通(default),2=中等,3=警告,4=出错,5=危险)
*/
var log=function (title,content,type,level,target){
if(title==null||content==null){return;}
if(targer==null||targer<1||targer>3){target=1;}
if(type==null|type<1||type>3){type=1;}
if(level==null|level<1||level>5){level=1;}

$.ajax({
type : “POST”,
url : “xxx!log.action”,
data : {
“log.title”:title,
“log.content”:content,
“log.target”:target,
“log.type”:type,
“log.level”:level
},
async : true,
success : function(data) {
// nothing..
}
});

};

//比如:

try {

} catch (e) {
log(“登录失败”,”用户致远尝试连续10次登录账户,均失败”,3,1);
}

try {

} catch (e) {
log(“系统出错”,”Caused by: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.”,1,4);

}

try {

} catch (e) {
log(“页面出错”,e.message);

}

//========================JavaBean==============

package test;

import java.util.Date;

/**
* 2017/07/13
* @author king
*
*/
public class Log {

private Integer id; // mysql自增主键private String title; // 日志标题private String content; // 日志详细内容,如服务器报错信息,SQL语句, 用户执行了某种敏感操作等private String ip; // 用户IP地址,无法获取到默认为 "0.0.0.0"private String userid; // 用户名,能记录到谁引发的错误就记录,否则就默认为匿名 "ANONYMOUS"private Integer target; // 记录日志到哪里(1=数据库(default),2=文件,3=数据库+文件)private Integer type;// 日志种类(1=服务器运行日志(default),2=SQL日志,3=用户动作日志)private Integer level;// 日志等级(1=普通(default),2=中等,3=警告,4=出错,5=危险)private Date logTime; // 日志记录的时间public Log() {    super();}public Log(String title, String content, String ip, String userid,        Integer target, Integer type, Integer level ) {    super();    this.title = title;    this.content = content;    this.ip = ip;    this.userid = userid;    this.target = target;    this.type = type;    this.level = level;}public Log(String title, String content) {    super();    this.title = title;    this.content = content;}public String getIp() {    return ip;}public void setIp(String ip) {    if (ip == null || "".equals(ip)) {        this.ip = "0,0,0,0";    } else {        this.ip = ip;    }}public String getUserid() {    return userid;}public void setUserid(String userid) {    if (userid == null || "".equals(userid)) {        this.ip = "ANONYMOUS";    } else {        this.userid = userid;    }}public Integer getId() {    return id;}public void setId(Integer id) {    this.id = id;}public String getTitle() {    return title;}public void setTitle(String title) {    this.title = title;}public String getContent() {    return content;}public void setContent(String content) {    this.content = content;}public Integer getTarget() {    return target;}public void setTarget(Integer target) {    if (target == null) {        this.target = 1;    } else {        this.target = target;    }}public Integer getType() {    return type;}public void setType(Integer type) {    if (type == null) {        this.type = 1;    } else {        this.type = type;    }}public Integer getLevel() {    return level;}public void setLevel(Integer level) {    if (level == null) {        this.level = 1;    } else {        this.level = level;    }}public Date getLogTime() {    return logTime;}public void setLogTime(Date logTime) {    if (logTime == null) {        this.logTime = new Date();    } else {        this.logTime = logTime;    }}

}

//=================Action 类 ==========

package test;

import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

/**
* 2017/07/13 此Action用于记录日志用,可保存日志到数据库和文件中去
*
* @author king
*
*/
public class LogAction implements Action {

private Log log;public String log() {    if (log == null || log.getTarget() == null) {        return "NOLOG";    }    log.setIp(ServletActionContext.getRequest().getRemoteAddr());    log.setLogTime(new Date());    switch (log.getTarget().intValue()) {    case 1:        // 保存日志到(mysql)数据库中去        // xxxdbserice.save(log);        break;    case 2:        // 保存日志信息到文本文件中去        // xxxfileserice.save(log);        break;    case 3:        // 同时保存 日志到文本文件到数据库和文件中去        // xxxfileserice.save(log);        // xxxdbserice.save(log);        break;    }    return "success";}public Log getLog() {    return log;}public void setLog(Log log) {    this.log = log;}

}

// ============Mysql 数据库表================
table log:

id int(11),
title varchar(128),
content varchar(1024),
ip varchar(15) default “0,0,0,0”,
userid varchar(64),
type tinyint(2) default 1,
level tinyint(2) default 1,
logTime date

原创粉丝点击