zoukankan      html  css  js  c++  java
  • 关于日志表的自动创建及分表储存

    虽然项目经历觉得这样做不妥,但还是觉得有必要记录一下。

    主要思路就是:

    数据表名格式在自己规定好的,如:sys_log_2018,2018是获取当前年份;

    添加数据时会判断数据库是否存在这张表,如果存在,则会添加数据,如果不存在,则会根据年份重新创建一个新的物理表;

    创建表的代码如下

    /**
        * 创建表
        * @param tableName
        */
       public void createTmpTable(@Param(value="tableName")String tableName);

    创建表的sql如下:

    <update id="createTmpTable" parameterType="string">
            CREATE TABLE ${tableName}(         
            id VARCHAR2(64) not null,
            log_type VARCHAR2(64),  
            title NVARCHAR2(500),  
            create_by VARCHAR2(64),  
            create_date TIMESTAMP(6),  
            remote_addr VARCHAR2(255),  
            user_agent VARCHAR2(255),  
            request_uri VARCHAR2(255),  
            method VARCHAR2(5),  
            params CLOB,  
            exception CLOB,
            operate_type VARCHAR2(64),  
            content CLOB,
             PRIMARY KEY (id)     
            )
     </update>

    查询表名:

    public List<String> findAllTableNames();
    <
    select id="findAllTableNames" resultType="String"> <![CDATA[ select table_name from user_tables ]]> </select>
    public static void saveLog(HttpServletRequest request, Log log){
       LogService logService = (LogService) ContextLoader.getCurrentWebApplicationContext()
                .getBean("logService");
    //查询所有表名 List
    <String> list = logService.findAllTableNames(); String tableName = "sys_log_" + DateUtils.getYear(); if (!list.contains(tableName.toUpperCase())) { logService.createTmpTable(tableName); } User user = UserUtils.getUser(); if (user != null && user.getId() != null){ log.setCreateBy(user); log.setRemoteAddr(com.thinkgem.jeesite.common.utils.StringUtils.getRemoteAddr(request)); log.setUserAgent(request.getHeader("user-agent")); log.setRequestUri(request.getRequestURI()); log.setParams(request.getParameterMap()); log.setMethod(request.getMethod()); log.setCreateDate(user.getLoginDate()); log.preInsert(); log.setTableName(tableName); logDao.insert(log); } }
  • 相关阅读:
    Django-(二).模型层
    firewalld
    2.Python爬虫入门二之爬虫基础了解
    1.Python爬虫入门一之综述
    wxpython 安装教程
    使用Pycharm 安装三方库
    Selenium中的webdriver定位元素失败的常见原因
    Linux 配置selenium + webdriver 环境
    类属性、实例属性
    linux 安装mysql数据库
  • 原文地址:https://www.cnblogs.com/person008/p/9032286.html
Copyright © 2011-2022 走看看