log4j 日志文件存储数据库的解决方案二(Java中写sql语句)

HashMapping.java

package com.panda.core.log.bean;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created by Lovell on 26/10/2016.
 */
/*
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@@        @@        @@       @@@@
 @@@@  @@@@@@@@  @@@@  @@  @@@   @@@
 @@@@  @@@   @@  @@@@  @@  @@@@  @@@
 @@@@  @@@@  @@  @@@@  @@  @@@   @@@
 @@@@        @@        @@       @@@@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 */

public class HashMapping {
    private static Logger logger = LoggerFactory.getLogger(HashMapping.class);

    public static final String PLAYER_ID = "name";          // 用户名称
    public static final String PLAYER_NAME = "username";    // 用户名称
    public static final String PLAYER_BEHAVOR = "behavior"; // 用户密码
    public static final String PLAYER_TIME = "time";        // 用户时间
}
PlayerBean.java

package com.phoenix.core.log.bean;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 玩家
 * Created by Lovell on 26/10/2016.
 */
/*
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@@        @@        @@       @@@@
 @@@@  @@@@@@@@  @@@@  @@  @@@   @@@
 @@@@  @@@   @@  @@@@  @@  @@@@  @@@
 @@@@  @@@@  @@  @@@@  @@  @@@   @@@
 @@@@        @@        @@       @@@@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 */

public class PlayerBean {
    private static Logger logger = LoggerFactory.getLogger(PlayerBean.class);

    private int playerId;

    private String playerName;

    private String behaviour;

    private String time;

    public int getPlayerId() {
        return playerId;
    }

    public void setPlayerId(int playerId) {
        this.playerId = playerId;
    }

    public String getPlayerName() {
        return playerName;
    }

    public void setPlayerName(String playerName) {
        this.playerName = playerName;
    }

    public String getBehaviour() {
        return behaviour;
    }

    public void setBehaviour(String behaviour) {
        this.behaviour = behaviour;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

}

DBAppender.java

package com.phoenix.core.log.control;

import com.phoenix.core.log.bean.HashMapping;
import com.phoenix.core.log.util.LogHelper;
import org.apache.log4j.jdbc.JDBCAppender;
import org.apache.log4j.spi.LoggingEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

/**
 * Created by Lovell on 26/10/2016.
 */
/*
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@@        @@        @@       @@@@
 @@@@  @@@@@@@@  @@@@  @@  @@@   @@@
 @@@@  @@@   @@  @@@@  @@  @@@@  @@@
 @@@@  @@@@  @@  @@@@  @@  @@@   @@@
 @@@@        @@        @@       @@@@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 */

public class DBAppender extends JDBCAppender {
    private static Logger logger = LoggerFactory.getLogger(DBAppender.class);

    public List<Object> params = new ArrayList<Object>();
    /**
     * 关闭连接
     *
     * @param connection
     */
    protected void closeConnection(Connection connection) {
        LogHelper.getInstance().dbService.evictConnection(connection);
    }

    /**c
     * 执行sql语句
     *
     * @param sql
     * @throws SQLException
     */
    @Override
    protected void execute(String sql) throws SQLException {
        boolean flag = false;
        int end = sql.lastIndexOf(")");
        String sqls = sql.substring(0, end + 1);
        String beanname = sql.substring(end + 1);
        if (beanname.equals("PlayerBean")) {             // 如果类名为PlayerBean
            // 存入数据库
            flag = LogHelper.getInstance().updatePlayer(sqls, params);
        }
        logger.info(!flag ? "insert fail!" : "insert successful!");
    }

    /**
     * 获取连接
     *
     * @return
     * @throws SQLException
     */
    @Override
    protected Connection getConnection() throws SQLException {
        if (connection == null) {
            connection = LogHelper.getInstance().dbService.getConnection();
        }
        return connection;
    }

    /**
     * 获取Log声明
     *
     * @param event
     * @return
     */
    @Override
    protected String getLogStatement(LoggingEvent event) {
        StringBuffer stringBuffer = new StringBuffer();
        Hashtable hashtable = (Hashtable) event.getMessage();

        String table = "t_login";
        String playerId = "12";
        String playerName = "lovell";
        String behavior = "test";
        String time = "123456";

        logger.info("存入MySQL数据库表名为【{}】,用户ID[{}],用户名【{}】,用户密码【{}】" + table + playerId, playerName, behavior, time);
        String sql = null;
        if ((hashtable.get("beanname")).equals("PlayerBean")) { // 如果类名为UserBean
            sql = String.format("insert into %s (playerId, playerName, behavior, time) values(?, ?, ?, ?)",
                    table);

            params.add(hashtable.get(HashMapping.PLAYER_ID));       // 昵称
            params.add(hashtable.get(HashMapping.PLAYER_NAME));     // 玩家等级
            params.add(hashtable.get(HashMapping.PLAYER_BEHAVOR));  // 行为
            params.add(hashtable.get(HashMapping.PLAYER_TIME));     // 时间

            return sql + hashtable.get("beanname");
        }
        return sql;
    }
}
GetObject.java

package com.phoenix.core.log.dao;

import com.phoenix.core.log.bean.PlayerBean;
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Hashtable;

/**
 * Created by Lovell on 26/10/2016.
 */
/*
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@@        @@        @@       @@@@
 @@@@  @@@@@@@@  @@@@  @@  @@@   @@@
 @@@@  @@@   @@  @@@@  @@  @@@@  @@@
 @@@@  @@@@  @@  @@@@  @@  @@@   @@@
 @@@@        @@        @@       @@@@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 */

public class GetObject {
    private static Logger logger = LoggerFactory.getLogger(GetObject.class);

    private PlayerBean playerBean;             // 玩家对象
    private SimpleDateFormat simpleDateFormat;

    /**
     * 保存对象
     */
    public PlayerBean insertInfo(int playerId, String playerName, String behaviour) {
        playerBean = new PlayerBean();
        playerBean.setPlayerId(playerId);
        playerBean.setPlayerName(playerName);
        playerBean.setBehaviour(behaviour);
        return playerBean;
    }

    public PlayerBean getPlayerBean() {
        return playerBean;
    }

    public void setPlayerBean(PlayerBean playerBean) {
        this.playerBean = playerBean;
    }

    public SimpleDateFormat getSimpleDateFormat() {
        return simpleDateFormat;
    }

    public void setSimpleDateFormat(SimpleDateFormat simpleDateFormat) {
        this.simpleDateFormat = simpleDateFormat;
    }

    // bean key-value
    public void getMethod(Object obj) {
        // 简单的日期格式
        simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        PropertyConfigurator.configure("log4j.properties");

        Hashtable hashtable = new Hashtable();
        hashtable.clear();
        if (obj instanceof PlayerBean) {
            hashtable.put("playerId", playerBean.getPlayerId());              // 用户名
            hashtable.put("playerName", playerBean.getPlayerName());          // 密码
            hashtable.put("behaviour", playerBean.getBehaviour());            // 时间日期
            hashtable.put("time", simpleDateFormat.format(new Date()));       // 时间
            hashtable.put("beanname", "PlayerBean");                          // 类名
        }
        logger.info(String.valueOf(hashtable));
    }
}
LogDao.java

package com.phoenix.core.log.dao;

import com.phoenix.core.db.dao.Dao;
import com.phoenix.core.db.impl.DBService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

/**
 * 日志接口类
 * Created by Lovell on 26/10/2016.
 */
/*
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@@        @@        @@       @@@@
 @@@@  @@@@@@@@  @@@@  @@  @@@   @@@
 @@@@  @@@   @@  @@@@  @@  @@@@  @@@
 @@@@  @@@@  @@  @@@@  @@  @@@   @@@
 @@@@        @@        @@       @@@@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 */

public class LogDao {
    private static Logger logger = LoggerFactory.getLogger(LogDao.class);

    private static final String LOG_CONFIG_FILE = "/log4j.xml";

    public DBService dbService;
    public Dao dao;

    /**
     * 设置MySQL服务器配置文件路径
     *
     * @param fileName
     */
    public void setDBConfigFileName(final String fileName) {
        if (fileName == null || fileName.length() == 0) {
            return;
        }
        dbService = new DBService(fileName);
    }

    /**
     * 以配置文件启动数据库
     *
     * @param fileName
     */
    public void startDB(final String fileName) {
        dbService.setConfigFileName(fileName);
        logger.info("Start DB.");
    }

    /**
     * 停止MySQL
     */
    public void stopDB() throws IOException, SQLException {
        dbService.stop();
        logger.info("MySQL was stopped.");
    }

    /**
     * 更新玩家数据 增删改
     *
     * @param sql
     * @param params
     * @return
     * @throws SQLException
     */
    public boolean updatePlayer(String sql, List<Object> params) throws SQLException {
        return dao.updateByPreparedStatement(sql, params);
    }
}
LogHelp,java


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VCHH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值