Java Web Project自定义错误页面,log4j记录日志。
创建记录日志的文件LoggerHelper.java:
package com.wyp.helper;
import org.apache.log4j.Logger;
public class LoggerHelper {
private static Logger _logger = Logger.getLogger(LoggerHelper.class);
private static String newLine = System.getProperty("line.separator");
public static void info(Logger logger, String message) {
logger.info(newLine);
logger.info(message);
}
public static void info(Logger logger, String message, Throwable exception) {
logger.info(newLine);
logger.info(message, exception);
}
public static void debug(Logger logger, String message) {
logger.debug(newLine);
logger.debug(message);
}
public static void debug(Logger logger, String message, Throwable exception) {
logger.debug(newLine);
logger.debug(message, exception);
}
public static void error(Logger logger, String message) {
logger.error(newLine);
logger.error(message);
}
public static void error(Logger logger, String message, Throwable exception) {
logger.error(newLine);
logger.error(message, exception);
}
public static void info(String message) {
_logger.info(newLine);
_logger.info(message);
}
public static void info(String message, Throwable exception) {
_logger.info(newLine);
_logger.info(message, exception);
}
public static void debug(String message) {
_logger.debug(newLine);
_logger.debug(message);
}
public static void debug(String message, Throwable exception) {
_logger.debug(newLine);
_logger.debug(message, exception);
}
public static void error(String message) {
_logger.error(newLine);
_logger.error(message);
}
public static void error(String message, Throwable exception) {
_logger.error(newLine);
_logger.error(message, exception);
}
}
LoggerHelper
创建Global.java文件:
package helper; import java.io.File; import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; public class Global implements ServletContextListener { private Logger _logger = Logger.getLogger(Global.class); @Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
LoggerHelper.info(_logger, "网站停止");
} @Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
ServletContext sc = arg0.getServletContext(); String prefix = sc.getRealPath("/WEB-INF");
String file = "log4j.properties";
String configPath = prefix + File.separator + file; String logFilePath = sc.getRealPath("/");
System.setProperty("tomcat", logFilePath); PropertyConfigurator.configure(configPath); LoggerHelper.info(_logger, "网站启动");
}
}
Global
web.xml的配置很简单啦,网上搜一下就一大堆了。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>JspLog4j</display-name>
<listener>
<listener-class>helper.Global</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
</web-app>
web.xml
自定义错误页面error.jsp。
<%@page import="com.wyp.helper.LoggerHelper"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%>
<%
response.setStatus(200);
String newLine = System.getProperty("line.separator");
StringBuilder sb = new StringBuilder();
sb.append(newLine);
sb.append("访问的路径:");
sb.append(newLine);
sb.append(request.getRequestURI());
sb.append(newLine);
sb.append("异常信息:");
sb.append(newLine);
sb.append(exception.getClass() + " : " + exception.getMessage()); Map<String,String[]> map = request.getParameterMap();
if (map.size()>0) {
sb.append(newLine);
sb.append("请求参数:");
sb.append(newLine);
for(Map.Entry<String,String[]> entry : map.entrySet()){
String key = entry.getKey();
String[] values = entry.getValue();
sb.append(key+"=");
for(String value : values){
sb.append(value+",");
}
}
sb.append(newLine);
}
LoggerHelper.error(sb.toString(),exception); %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>自定义错误页面</title>
</head>
<body>
<h1>自定义错误页面</h1>
</body>
</html>
error.jsp
在WEB-INF文件夹里创建log4j.properties文件
log4j.rootLogger=debug,stdout,logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${tomcat}/logs/website.txt
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.layout.ConversionPattern=%n%d{yyyy-MM-dd HH\:mm\:ss} %F %m
log4j.properties
默认日志文件存放在:apache-tomcat-6.0.36\bin\下面,可以使用占位符变量表示你日志信息存放的目录,例如:${tomcat}。
使用System.setProperty("tomcat",sc.getRealPath("/"));设置最终的目录。
最后如果部属目录没有log4j.properties和log4j.jar文件,需要手动将这个log4j.properties文件复制到Tomcat\webapps\项目名\WEB-INF文件夹里,将log4j.jar文件复制到对应的Tomcat\webapps\项目名\WEB-INF\lib目录下面。
Java Web Project自定义错误页面,log4j记录日志。的更多相关文章
- 【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
问题定义 使用Azure应用服务(App Service),部署Java应用,使用Tomcat容器,如何自定义错误页面呢?同时禁用DELETE, PUT方法 解决办法 如何自定义错误页面呢?需要在 J ...
- java web工程的错误页面的简单配置
jsp页面,本身服务器也会将该页面翻译成一个servlet页面,所以请求该页面就会有可能出现错误的情况,就会出现下面类似的页面 这样给客户看到并不友好. 1.jsp页面<%@ page %> ...
- Web服务器自定义错误页面
在使用Web服务器运行程序的时候,难免会出现诸如 404.500 等错误,那么如何针对不同的错误代码来自定义错误页面呢? 1.找到web项目的 web.xml 文件打开,添加以下标签代码,规则是 er ...
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
C#不用union,而是有更好的方式实现 用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C# ...
- 在Tomcat中配置404自定义错误页面详解
这篇文章主要介绍了在Tomcat中配置404自定义错误页面全解,需要的朋友可以参考下 一直使用tomcat,今天想到一个问题,自定义404错误页面, 为了获得很好的用户感受,是不应当向用户暴露404这 ...
- ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面
应用场景和使用目的 很多时候,我们在访问页面的时候,由于程序异常.系统崩溃会导致出现黄页.在通常的情况下,黄页对于我们来说,帮助是极大的,因为它可以帮助我们知道问题根源,甚至是哪一行代码出现了错误.但 ...
- MVC4 自定义错误页面(转)
一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.We ...
- MVC4 自定义错误页面(三)
一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.We ...
- Spring Boot自定义错误页面,Whitelabel Error Page处理方式
我已经是Spring Framework框架的忠实粉丝.对于企业软件开发者来说它提供了对常见问题的通用解决方案,包括那些你在未来开发中没有意识到的问题.但是,它构建的J2EE项目变得比较臃肿,需要被一 ...
随机推荐
- poj 1007 Quoit Design(分治)
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 新买的mac笔记本,发现vi编辑器没有颜色的解决方案
新买的mac笔记本,发现vi编辑器没有颜色的解决方案 我在网络上找了一些资料,发现都有些问题,尤其是一些让修改根目录上的文件,发现根本无法修改. 但是在网络上找到了这篇文章: http://super ...
- Visual Studio Code 构建C/C++开发环境
转自: https://blog.csdn.net/lidong_12664196/article/details/68928136#visual-sutdio-code%E4%BB%A5%E5%8F ...
- MySQL语法大全
select * from emp; #注释 #--------------------------- #----命令行连接MySql--------- #启动mysql服务器 net start m ...
- Android中Intent的显示和隐式使用
Android应用程序中组件之间的通信都少不了Intent的使用,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件, ...
- MVC 与 MVP 架构 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 页面的缓存设置与meta的作用详细解释
网上转的,来自JSP的,但是原理大同小异哦,有时间 写个asp.net版的 HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息,包括浏览器端,中间缓存服务器端(如:squid等),Web服务 ...
- 20个令人惊叹的音乐应用程序UI,值得收藏
我们无法想象世界上没有手机.他们已经成为日常生活中不可缺失的一部分.今天的手机可以让你不只是拨打电话和发送消息.它可以让你浏览网页空间,拍照,看书,听音乐等等. 回顾一下互联网,你会看到不同的音乐AP ...
- 直接修改class文件内容即使是文本会导致App异常,正确方式是修改java再用生成的class替换掉原有的class
前几天来了个小任务,把某项目中某人的邮件地址改了下. 由于对项目不熟悉,于是采用find方式找出app中所有包含某人邮件地址的文件都找出来了. xml,properties大约三四个,还有两个clas ...
- Session 共享(Custom模式)By Memcached(原创)
1.web.config配置: <machineKey decryptionKey="FD69B2EB9A11E3063518F1932E314E4AA1577BF0B824F369& ...