`
zjh1n795
  • 浏览: 9522 次
文章分类
社区版块
存档分类
最新评论

使用Log4j在系统中配置两个不同的Log输出

 
阅读更多

转自:http://blog.csdn.net/godroad/archive/2006/02/24/607940.aspx

一般的Log的使用,通过配置Log4j的配置文件,就可以生成Log.

在开发中碰到一个对Log要求比较高的需求。要求Log的输出分成两类,一类是普通Log,就是平常操作记录的Log;一类是异常Log,就是在出现异常的时候将异常记录下来。

两类log要在不一样的文件中输出。普通log纪录在三个文件中循环使用。异常Log则是在运行出现异常的时候新建一个文件详细记录异常的内容,一次运行出现的异常信息记录在一个文件中,下次运行出现异常则新建一个文件。

这个需求不能简单的通过写Log4j的配置文件来实现,而需要在代码中调用Log4j的类来实现。

public class LogRun {

//设定两个Log
public static Logger normalLogger = Logger.getLogger("normal.logger");
public static Logger exceptionLogger = Logger.getLogger("exception.logger");
public static final String PROFILE = "log4j.properties";

//设定异常log输出的路径
private static final String PATH = "log/exception/";


static {
URL configFileResource = LogRun.class.getResource(PROFILE);
PropertyConfigurator.configure(configFileResource);
}

//构造方法,生成一个新的异常Log文件
public LogRun(){
try {
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String fileName = PATH + "exception_" + sf.format(date).toString() + ".log";
FileAppender exceptionAppender = new FileAppender(new SimpleLayout(), fileName);
exceptionLogger.addAppender(exceptionAppender);
} catch (Exception e) {
MessageBox.errorBox(e);
}
}

}

在代码中,只要初始化:

public static Logger logger = Logger.getLogger(Log.class);

就可以通过

LogRun.normalLogger.debug来记录普通Log。

当第一次出现异常的时候,则需要初始化LogRun方法创建一个异常文件。并且通过LogRun.exceptionLogger.error来记录异常Log。在下次出现异常的时候

则只要调用LogRun.exceptionLogger.error来记录就OK了。

附上配置文件:

log4j.category.normal.logger=DEBUG, normal,stdout
log4j.category.exception.logger=ERROR

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} %-5p %m%n

log4j.appender.normal=org.apache.log4j.RollingFileAppender
log4j.appender.normal.File=log/normal.log
log4j.appender.normal.MaxFileSize=100kb
log4j.appender.normal.MaxBackupIndex=4
log4j.appender.normal.layout=org.apache.log4j.PatternLayout
log4j.appender.normal.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} %-5p %m%n

分享到:
评论

相关推荐

    Log4j详解,详细讲解log4j的使用,和原理

    Log4j 支持两种格式的配置文件:XML 格式和 Java 的 property 格式。配置文件是 Log4j 的核心组件之一,通过配置文件可以灵活地控制日志的输出。 Log4j 的配置方式 Log4j 提供了多种配置方式,包括: * 通过配置...

    log4j乱码问题解决办法

    在log4j.properties配置文件中可以指定字符编码: 下面这行配置指定了两个appender: log4j.rootCategory=INFO,appender1的名字,appender2的名字 下面这两行配置将上一行的两个appender的字符编码配置为GBK:

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    Log4j学习和详细配置

    在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码(System.out.println(......)等)。 log4j是一个非常强大的log记录软件,...

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等

    Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件log4j.properties(键=值)。下面将介绍使用log4j.properties文件作为配置文件的方法:

    Log4j 学习笔记.doc

    Log4j 学习笔记. 1. Log4j的类图 ...3. xml格式的log4j配置文件概述 4. 在xml文件中配置appender和layout 5. 我自己的一个使用xml文件配置log4j环境的很简单的例子 6. Log4j的编码习惯 参考资料

    log4j的.xml配置文档

    使用log4j配置info与error两种log文件输出

    log4cplus 源码(C++编写的开源的日志系统)

    log4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工程中会比较专业的,:),本文介绍了log4cplus基本概念,以及如何安装,配置。 ### 简介 ### log4cplus是C++编写的开源的日志系统,前身是java...

    nodejs log4js 使用详解

    先大概的对log4js 的基本用法做一个总结,使用configure()方法对日志输出进行配置,使用 getlogger()方法获取logger对象,然后使用logger 对象进行打印各个级别的日志。其中比较复杂的是 configure()方法中的配置...

    springboot 日志配置文件 logback

    logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。 logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。 ...

    mybatis超级资料包

    4、mybatis使用log4j.xml和log4j.properties两种日志输出方式的配置 5、部分sql文件参考样例(比如if的另类用户,id in('a','b')转换为(and id =? or id =? or id =? ... ) 总之 抛砖引玉) 6、文件中有我的联系方式,...

    LBLogger java日志记录信息

    java已经有很多的logger jar,但是使用和配置起来都存在一定复杂性,不适合程序的调试和开发 本人在实际的工作根据实际需要提供以下简便的...建议大家使用 nsf4j 加 log4j,我算是重复发明轮子了。供大家学习吧!

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    LoggindTools:设置日志的示例和手册

    在Spring Boot项目中使用Log4j2设置日志的说明 通常会在项目中设置日志记录,而在本地环境中,为了方便调试,应将日志记录输出到控制台和文件中,以方便调试;在远程服务器上,将日志输出到控制台是非常不可取的,...

    ssh(structs,spring,hibernate)框架中的上传下载

    3在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler处理Oracle数据库的Blob类型字段。  通过这样的设置和配置,我们就可以象持久化表的一般字段类型一样处理Blob字段了。  以上是Spring+...

    linux日常运维练习题

    系统会记录在 `/var/log/auth.log` 文件中。 25. 网卡或者硬盘有问题时,我们可以通过使用哪个命令查看相关信息? 可以使用 `dmesg` 命令查看系统日志信息。 26. 分别使用 xargs 和 exec 实现这样的需求,把当前...

    Linux高级bash编程

    高级bash编程 高级Bash脚本编程指南(一) 目录 ++++ 第一部分.... 1.... 2. 带着一个Sha-Bang出发... 在一个脚本中使用 cmp 来比较2个文件. 12-33. basename 和 dirname 12-34. 检查文件完整性 12-35. Uudecod 编码后的...

Global site tag (gtag.js) - Google Analytics