📄 vlog.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的 */package biz.tbuy.common.logs;import biz.tbuy.common.ComApplication;import biz.tbuy.common.Constants;import biz.tbuy.common.Visitor;import biz.tbuy.share.XmlOper;import java.io.File;import java.io.Serializable;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import org.w3c.dom.Text;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b><a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b><a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> */public class Vlog implements Serializable{ public Vlog() {} /** * 获取访问日志信息 * @return vlogs */ public List<Map<String, String>> getVlogsByDate(Date date) { List<Map<String, String>> vlogs = new ArrayList<Map<String, String>>(); File vlogFile = getLogFile(date); try { Document doc = XmlOper.getDocument(vlogFile); Element root = doc.getDocumentElement(); NodeList visitors = root.getElementsByTagName("visitor"); int len = visitors.getLength(); for (int i = 0; i < len; i++) { Element visitor = (Element)visitors.item(i); String ip = visitor.getElementsByTagName("ip").item(0).getTextContent(); String user = visitor.getElementsByTagName("user").item(0).getTextContent(); String startTime = visitor.getElementsByTagName("start-time").item(0).getTextContent(); String endTime = visitor.getElementsByTagName("end-time").item(0).getTextContent(); Map<String, String> vlog = new HashMap<String, String>(4); vlog.put("ip", ip); vlog.put("user", user); vlog.put("startTime", startTime); vlog.put("endTime", endTime); vlogs.add(vlog); } } catch (Exception e) { System.out.println("Exception:Vlog:getVlogsByDate:" + e.getMessage()); } return vlogs; } /** * 登记访问者 */ public void log(Visitor visitor) { try { File vlogFile = getLogFile(new Date()); Document doc = XmlOper.getDocument(vlogFile); Element xRoot = doc.getDocumentElement(); Element xVisitor = doc.createElement("visitor"); Element xIp = doc.createElement("ip"); Element xUser = doc.createElement("user"); Element xStartTime = doc.createElement("start-time"); Element xEndTime = doc.createElement("end-time"); Text xIp_text = doc.createTextNode(visitor.getIp()); Text xUser_text; Text xStartTime_text; if (visitor.isLogin()) { xUser_text = doc.createTextNode(visitor.getUser().getId()); Date nowTime = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); xStartTime_text = doc.createTextNode(sdf.format(nowTime)); } else { // 如果用户未登录,则startTime使用用户的首次访问时间 xUser_text = doc.createTextNode("--"); xStartTime_text = doc.createTextNode(visitor.getFirstTime()); } Text xEndTime_text = doc.createTextNode("--"); xRoot.appendChild(xVisitor); xVisitor.appendChild(xIp); xVisitor.appendChild(xUser); xVisitor.appendChild(xStartTime); xVisitor.appendChild(xEndTime); xIp.appendChild(xIp_text); xUser.appendChild(xUser_text); xStartTime.appendChild(xStartTime_text); xEndTime.appendChild(xEndTime_text); XmlOper.saveDocument(doc, vlogFile); } catch (Exception saxe) { System.out.println("Exception:Vlog:log:" + saxe.getMessage()); } } /** * 记录用户的大概离开时的时间 */ public void logLeave(Visitor visitor) { try { File vlogFile = getLogFile(new Date()); Document doc = XmlOper.getDocument(vlogFile); Element xRoot = doc.getDocumentElement(); NodeList visitors = xRoot.getElementsByTagName("visitor"); int len = visitors.getLength(); Date nowTime = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String endTime = sdf.format(nowTime); for (int i = len - 1; i >= 0; i++) { Element xVisitor = (Element)visitors.item(i); String ip = xVisitor.getElementsByTagName("ip").item(0).getTextContent(); String user = xVisitor.getElementsByTagName("user").item(0).getTextContent(); String startTime = xVisitor.getElementsByTagName("start-time").item(0).getTextContent(); //System.out.println(ip + ":" + user + ":" + startTime); if (!visitor.isLogin()) { if (ip.equals(visitor.getIp()) && startTime.equals(visitor.getFirstTime())) { xVisitor.getElementsByTagName("end-time").item(0).setTextContent(endTime); break; } } else { if (ip.equals(visitor.getIp()) && user.equals(visitor.getUser().getId())) { xVisitor.getElementsByTagName("end-time").item(0).setTextContent(endTime); break; } } } XmlOper.saveDocument(doc, vlogFile); } catch (Exception e) { System.out.println("Exception:Vlog:logLeave:" + e.getMessage()); } } /** * 测试中.......... * 记录用户的大概离开时的时间,多个用户 */ public void logLeave(List<Visitor> someVisitors) { if (someVisitors == null || someVisitors.isEmpty()) return; try { File vlogFile = getLogFile(new Date()); Document doc = XmlOper.getDocument(vlogFile); Element xRoot = doc.getDocumentElement(); NodeList visitors = xRoot.getElementsByTagName("visitor"); int len = visitors.getLength(); Date nowTime = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String endTime = sdf.format(nowTime); for (Visitor visitor : someVisitors) { for (int i = len - 1; i >= 0; i++) { Element xVisitor = (Element)visitors.item(i); String ip = xVisitor.getElementsByTagName("ip").item(0).getTextContent(); String user = xVisitor.getElementsByTagName("user").item(0).getTextContent(); String startTime = xVisitor.getElementsByTagName("start-time").item(0).getTextContent(); //System.out.println(ip + ":" + user + ":" + startTime); if (!visitor.isLogin()) { if (ip.equals(visitor.getIp()) && startTime.equals(visitor.getFirstTime())) { xVisitor.getElementsByTagName("end-time").item(0).setTextContent(endTime); break; } } else { if (ip.equals(visitor.getIp()) && user.equals(visitor.getUser().getId())) { xVisitor.getElementsByTagName("end-time").item(0).setTextContent(endTime); break; } } } } XmlOper.saveDocument(doc, vlogFile); } catch (Exception e) { System.out.println("Exception:Vlog:logLeave(manay):" + e.getMessage()); } } /** * 获取特定日期的日志文件路径 */ private File getLogFile(Date date) { //System.out.println("in getLogFile..."); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String filename = "vlog" + sdf.format(date) + ".xml"; String vlog = getVlogPath() + "/" + filename; File file = new File(vlog); if (!file.exists()) { newXML(vlog); } //System.out.println("vlog" + vlog); return file; } /** * 创建新的xml文件 */ private void newXML(String path) { try { Document doc = XmlOper.newDocument(); Element root = doc.createElement("root"); doc.appendChild(root); XmlOper.saveDocument(doc, path); } catch (Exception e) { System.out.println("Exception:Vlog:newXML:" + e.getMessage()); } } /** * 获取访问日志文件的绝对路径 */ private String getVlogPath() { return ComApplication.getInstance().getServletContextPath() + Constants.PATH_VLOG; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -