• 关于日志表的自动创建及分表储存


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

    主要思路就是:

    数据表名格式在自己规定好的,如: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); } }
  • 相关阅读:
    Windows API Reference for C#, VB.NET and VB6
    工程建设项目综合信息管理系统
    GridView,Repeater分页控件:WebPager 开源了
    asp.net服务器控件开发学习之路(一)
    ajaxToolkit:TabContainer 背景色的设置
    TreeView 树结构的断层处理
    C# 集合类(二):Queue
    AutoCAD.net(三)用VS.NET2005开发ObjectARX程序 调试方法
    AutoCAD.net(一):更改AutoCAD窗口的标题和图标
    C# 集合类(四):Hashtable
  • 原文地址:https://www.cnblogs.com/person008/p/9032286.html
Copyright © 2020-2023  润新知