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