【ThinkingInJava】25、将异常输出记录到日志

/**
* 书本:《Thinking In Java》
* 功能:将异常输出记录到日志中。
* 文件:LoggingExceptions.java
* 时间:2015年4月8日21:11:51
* 作者:cutter_point
*/
package Lesson12_error_handling_with_exceptions;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Logger;

class LoggingException extends Exception
{
	private static Logger logger = Logger.getLogger("LoggingException");

	public LoggingException()
	{
		StringWriter trace = new StringWriter();
		printStackTrace(new PrintWriter(trace));
		logger.severe(trace.toString());
	}
}

public class LoggingExceptions
{
	public static void main(String [] args)
	{
		try
		{
			throw new LoggingException();
		}
		catch (LoggingException e)
		{
			System.err.println("Caught " + e);
		}

		try
		{
			throw new LoggingException();
		}
		catch (LoggingException e)
		{
			System.err.println("Caught " + e);
		}
	}

}

输出:

五月 04, 2015 3:53:49 下午 Lesson12_error_handling_with_exceptions.LoggingException <init>

严重: Lesson12_error_handling_with_exceptions.LoggingException

at Lesson12_error_handling_with_exceptions.LoggingExceptions.main(LoggingExceptions.java:32)

Caught Lesson12_error_handling_with_exceptions.LoggingException

五月 04, 2015 3:53:49 下午 Lesson12_error_handling_with_exceptions.LoggingException <init>

严重: Lesson12_error_handling_with_exceptions.LoggingException

at Lesson12_error_handling_with_exceptions.LoggingExceptions.main(LoggingExceptions.java:41)

Caught Lesson12_error_handling_with_exceptions.LoggingException

时间: 2024-11-06 03:53:40

【ThinkingInJava】25、将异常输出记录到日志的相关文章

记录到日志中的异常栈缺失

项目中有这样一个场景: 使用反射处理所有业务调用,在反射调用点使用try-catch集中处理异常,并将异常信息记录到日志.其中日志记录是异步的. 问题: 记录到日志中的异常的StackTrace和有时候和Debug时抛出的异常的StackTrace不一样. 原因: 由于记录日志是异步的,如果记录日志发生在throw之前,记录到日志中的异常的StackTrace就是正确的(异常真正发生点到throw点的所有StackTrace):如果记录日志发生在throw之后,记录到日志中的异常的StackTr

C# 使用Trace记录程序日志

在程序开发中,我们通常需要记录程序运行的状态,在程序部署后,发生的异常可以记录在日志中,便于发现程序潜在的问题.在.NET平台,有很多优秀的日志类库,例如Log4Net.如果程序很小,我们可以自己通过C#的Trace类来实现一个基本的日志记录功能.下面直接看代码: public class TraceHelper { private static TraceHelper _traceHelper; private TraceHelper() { } public static TraceHelp

Spring MVC异常统一处理(异常信息的国际化,日志记录)

JAVA EE项目中,不管是对底层的数据操作,还是业务层的处理过程,还是控制层的处理,都不可避免的会遇到各种可预知的(业务异常主动抛出).不可预知的异常需要处理.一般dao层.service层的异常都会直接抛出,最后由controller统一进行处理,每个过程都单独处理异常,且要考虑到异常信息和前端的反馈,代码的耦合度高,不统一,后期维护的工作也多. 同时还必须考虑异常模块和日志模块.国际化的支持. 因此需要一种异常处理机制将异常处理解耦出来,这样保证相关处理过程的功能单一,和系统其它模块解耦,

SpringBoot使用AOP记录请求日志和异常日志

本文基础WEB环境使用SpringBoot及Spring-Data-Jpa构建 关于SpringBoot及JPA用法本文不再过多讨论,下面是引入的jar: 起步依赖 web及aop依赖 jpa依赖 mysql驱动 本文着重AOP的使用,你也可以使用自己构建的环境 由于本文中使用的JPA,因此首先创建保存日志及保存异常的实体类,如果你使用的是Mybatis,则需要首先创建表然后根据表来逆向生成实体类 保存日志的实体类: 日志实体 保存异常的实体类: 异常实体 接下来我们定义一个Operation注

ASP.NET Core使用Elasticsearch记录NLog日志

ASP.NET Core使用Elasticsearch记录NLog日志 1.新建一个 ASP.NET Core项目 2.安装Nuge包 运行:Install-Package NLog.Web.AspNetCore 运行:Install-Package NLog 运行:Install-package NLog.Targets.ElasticSearch 3.编写NLog配置文件(NLog.config) <?xml version="1.0" encoding="utf-

Spring boot学习(六)Spring boot实现AOP记录操作日志

前言 在实际的项目中,特别是管理系统中,对于那些重要的操作我们通常都会记录操作日志.比如对数据库的CRUD操作,我们都会对每一次重要的操作进行记录,通常的做法是向数据库指定的日志表中插入一条记录.这里就产生了一个问题,难道要我们每次在 CRUD的时候都手动的插入日志记录吗?这肯定是不合适的,这样的操作无疑是加大了开发量,而且不易维护,所以实际项目中总是利用AOP(Aspect Oriented Programming)即面向切面编程这一技术来记录系统中的操作日志. 日志分类 这里我把日志按照面向

ASP.NET MVC中Log4Net记录错误日志的使用

第一.在管理NuGet程序包 =>下载 Log4Net 第二.在web.config配置Log4Net 1:在<configuration>节点下 <configSections>节点中 配置log4Net节点引用. <!--log4net日志记录--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net

Tomcat会话超时时怎样记录操作日志,满足安全审计要求

众所周知.在实际的Web应用程序中,会话管理一般都採用Web容器会话管理功能. 使用Tomcat做Webserver也是如此,并且从安全的角度考虑,尽量避免去更改和干预Web容器的会话管理功能. Tomcat会话管理功能肯定比我们自己做出来要全面和可靠,况且Tomcat是主流开源社区维护的.有专门的团队来开发和维护.一旦爆出安全漏洞,也能非常快被修复. 在实际开发中,为了满足安全审计的要求.Web应用程序一旦有会话注销.就应该记录操作日志.注销一般分为操作者主动注销.应用程序检測到异常攻击主动注

Web安全开发指南--异常错误处理与日志审计

1.异常错误处理与日志审计 5.1.日志审计系统安全规则 1 日志系统能够记录特定事件的执行结果(比如 成功或失败). 确保日志系统包含如下重要日志信息: 1.  日志发生的时间: 2.  事件的严重等级: 3.  能够标识该事件为安全事件的标签: 4.  导致事件产生的对象: 5.  导致事件产生的IP地址: 6.  事件的结果(成功或失败): 7.  关于事件的描述. 2 如果使用浏览器查看日志,确保先对日志数据进行净化.(item1.2请参考附录11.8) 3 不要在日志中存储任何敏感数据