zoukankan      html  css  js  c++  java
  • ruoyi LogUtils

    package com.ruoyi.framework.util;
    
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.shiro.SecurityUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import com.ruoyi.common.json.JSON;
    import com.ruoyi.common.utils.IpUtils;
    
    /**
     * 处理并记录日志文件
     * 
     * @author ruoyi
     */
    public class LogUtils
    {
        public static final Logger ERROR_LOG = LoggerFactory.getLogger("sys-error");
        public static final Logger ACCESS_LOG = LoggerFactory.getLogger("sys-access");
    
        /**
         * 记录访问日志 [username][jsessionid][ip][accept][UserAgent][url][params][Referer]
         *
         * @param request
         * @throws Exception
         */
        public static void logAccess(HttpServletRequest request) throws Exception
        {
            String username = getUsername();
            String jsessionId = request.getRequestedSessionId();
            String ip = IpUtils.getIpAddr(request);
            String accept = request.getHeader("accept");
            String userAgent = request.getHeader("User-Agent");
            String url = request.getRequestURI();
            String params = getParams(request);
    
            StringBuilder s = new StringBuilder();
            s.append(getBlock(username));
            s.append(getBlock(jsessionId));
            s.append(getBlock(ip));
            s.append(getBlock(accept));
            s.append(getBlock(userAgent));
            s.append(getBlock(url));
            s.append(getBlock(params));
            s.append(getBlock(request.getHeader("Referer")));
            getAccessLog().info(s.toString());
        }
    
        /**
         * 记录异常错误 格式 [exception]
         *
         * @param message
         * @param e
         */
        public static void logError(String message, Throwable e)
        {
            String username = getUsername();
            StringBuilder s = new StringBuilder();
            s.append(getBlock("exception"));
            s.append(getBlock(username));
            s.append(getBlock(message));
            ERROR_LOG.error(s.toString(), e);
        }
    
        /**
         * 记录页面错误 错误日志记录 [page/eception][username][statusCode][errorMessage][servletName][uri][exceptionName][ip][exception]
         *
         * @param request
         */
        public static void logPageError(HttpServletRequest request)
        {
            String username = getUsername();
    
            Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
            String message = (String) request.getAttribute("javax.servlet.error.message");
            String uri = (String) request.getAttribute("javax.servlet.error.request_uri");
            Throwable t = (Throwable) request.getAttribute("javax.servlet.error.exception");
    
            if (statusCode == null)
            {
                statusCode = 0;
            }
    
            StringBuilder s = new StringBuilder();
            s.append(getBlock(t == null ? "page" : "exception"));
            s.append(getBlock(username));
            s.append(getBlock(statusCode));
            s.append(getBlock(message));
            s.append(getBlock(IpUtils.getIpAddr(request)));
    
            s.append(getBlock(uri));
            s.append(getBlock(request.getHeader("Referer")));
            StringWriter sw = new StringWriter();
    
            while (t != null)
            {
                t.printStackTrace(new PrintWriter(sw));
                t = t.getCause();
            }
            s.append(getBlock(sw.toString()));
            getErrorLog().error(s.toString());
    
        }
    
        public static String getBlock(Object msg)
        {
            if (msg == null)
            {
                msg = "";
            }
            return "[" + msg.toString() + "]";
        }
    
        protected static String getParams(HttpServletRequest request) throws Exception
        {
            Map<String, String[]> params = request.getParameterMap();
            return JSON.marshal(params);
        }
    
        protected static String getUsername()
        {
            return (String) SecurityUtils.getSubject().getPrincipal();
        }
    
        public static Logger getAccessLog()
        {
            return ACCESS_LOG;
        }
    
        public static Logger getErrorLog()
        {
            return ERROR_LOG;
        }
    }
  • 相关阅读:
    ExtAspNet下通过文档路径实现文档的下载
    ExtjS学习--------Ext.define定义类
    【C语言天天练(二三)】errno变量
    Linux 内核kobject 层次, kset, 和子系统
    Linux 内核释放函数和 kobject 类型
    Linux 内核引用计数的操作
    Linux 内核 kobject 初始化
    Linux 内核 嵌入的 kobjects
    Kobjects, Ksets 和 Subsystems
    Kobjects, Ksets 和 Subsystems
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/11788654.html
Copyright © 2011-2022 走看看