`
tanglingshuai
  • 浏览: 36760 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

log4j分级输出(嵌套代码中)

阅读更多

 

log4j在java开发中常用的日志工具包,对程序日常运行时信息的信息进行记录,方便程序调试、跟踪、维护等,下面我将和大家分享我如何将程序中各种类型的运行信息分类输出到不同日志的方法。

 

说实例之前先看看简单了解下log4j配置文件中常用参数

 

(1). 输出方式appender一般有5种:

      org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
      org.apache.log4j.ConsoleAppender (控制台)  
      org.apache.log4j.FileAppender (文件)
      org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
      org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

 

(2). 日记记录的优先级priority,优先级由高到低分为 
      OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
      Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。

 

(3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
      %c        输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
      %d       输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
      %l        输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
      %n       换行符
      %m      输出代码指定信息,如info(“message”),输出message
      %p       输出优先级,即 FATAL ,ERROR 等
      %r        输出从启动到显示该log信息所耗费的毫秒数
      %t        输出产生该日志事件的线程名

 

 

log4j将日志信息分类输出以不同日志文件实例:

1、引入log4j

 

2、log4j.properties配置文件内容(配置文件放在src目录下):

 

#Debug

log4j.logger.debug=debug,debugAppender

#输出到控制台

log4j.appender.debugAppender=org.apache.log4j.RollingFileAppender

log4j.appender.debugAppender.File=D:/logs/debug.log

log4j.appender.debugAppender.MaxFileSize=10240KB

log4j.appender.debugAppender.MaxBackupIndex=3

#设置输出样式

log4j.appender.debugAppender.layout=org.apache.log4j.PatternLayout

#自定义样式

log4j.appender.debugAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.debugAppender = false

 

#Info

log4j.logger.info=debug,infoAppender

#输出到控制台

log4j.appender.infoAppender=org.apache.log4j.RollingFileAppender

log4j.appender.infoAppender.File=D:/logs/info.log

log4j.appender.infoAppender.MaxFileSize=10240KB

#最多保存几个备份文件

log4j.appender.infoAppender.MaxBackupIndex=3

#设置输出样式

log4j.appender.infoAppender.layout=org.apache.log4j.PatternLayout

#自定义样式

log4j.appender.infoAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.infoAppender = false

 

#Error

log4j.logger.error=debug,errorAppender

#输出到控制台

log4j.appender.errorAppender=org.apache.log4j.RollingFileAppender

log4j.appender.errorAppender.File=D:/logs/error.log

log4j.appender.errorAppender.MaxFileSize=10240KB

log4j.appender.errorAppender.MaxBackupIndex=3

#设置输出样式

log4j.appender.errorAppender.layout=org.apache.log4j.PatternLayout

#自定义样式

log4j.appender.errorAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.errorAppender = false

 

3.写一个工具类LogUtil

public class LogUtil {

 

private Logger loggerDebug = null;

private Logger loggerError = null;

private Logger loggerInfo = null;

 

private LogUtil() {

 

}

 

public static LogUtil getLogUtil(Object message) {

return new LogUtil();

}

 

public void debug(Object message) {

if (loggerDebug == null) {

loggerDebug = Logger.getLogger("debug");

}

loggerDebug.debug(message);

}

 

public void error(Object message) {

if (loggerError == null) {

loggerError = Logger.getLogger("error");

}

loggerError.error(message);

}

 

public void info(Object message) {

if (loggerInfo == null) {

loggerInfo = Logger.getLogger("info");

}

loggerInfo.info(message);

}

 

}

 

4.测试输出

public class Test {

 

public static void main(String[] args) {

LogUtil myLog = LogUtil.getLogUtil(Test.class);

myLog.debug("调试信息咆哮体...");

myLog.info("日志信息有木有...");

myLog.error("错误信息你伤不起...");

}

 

}

 

此方法可以实现日志的分级输出,但是会嵌套在代码里,或许可以用拦截器来记录日志...

 

 

 

分享到:
评论

相关推荐

    Log4j将System.out搞到log4j中输出四

    当我们习惯于使用`System.out.println()`进行调试时,如何将这些输出整合到Log4j中,以便统一管理和分析日志呢?本文将深入探讨这一主题。 首先,我们需要理解Log4j的基本概念。Log4j主要包括三个核心组件:Logger...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    4. **运行测试**:在`test-log4j`目录中的测试代码,应该是用来验证上述配置和日志记录功能是否正常工作的。它可能包含了针对`TestClass`的测试用例,调用`testMethod()`并在控制台查看输出的日志信息。 总结,SLF4...

    log4j配置 输出日志 案例

    本文将深入讲解如何配置log4j以实现日志输出到控制台和文件,并提供相关代码实例和案例分析。** ### 一、Log4j简介 Log4j是Apache组织开发的一个开源项目,用于生成日志信息。它提供了灵活的配置方式,支持多种输出...

    SpringBoot框架配置log4j和log4j2的配置代码

    本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,用于生成日志。它的核心功能包括定义日志级别(如DEBUG、INFO、WARN、ERROR),配置日志输出目的...

    logging-log4j2-log4j-2.15.0-rc2.zip maven 资源库

    针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...

    log4j自定义日志文件名及日志输出格式

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...

    Apache Log4j2 远程代码执行漏洞检测工具

    针对这个漏洞,开发出了专门的Apache Log4j2远程代码执行漏洞检测工具,这些工具包括针对Windows和Linux操作系统的版本。这些工具的主要目的是帮助管理员和安全专家迅速识别其环境中是否存在易受攻击的Log4j2实例。 ...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...

    log4j案例代码

    在上面的代码中,首先通过`PropertyConfigurator.configure()`加载了Log4j的配置文件,然后通过`Logger.getLogger()`创建了一个日志记录器,最后使用不同级别的方法记录日志。 **5. 配置文件详解** `log4j....

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

    在`log4j.properties`中,可能会定义多个Appender,比如将日志输出到控制台(ConsoleAppender)和文件(FileAppender)。 3. **Layouts**: Layout定义了日志信息的格式。常见的Layout有PatternLayout,可以自定义...

    log4j多文件输出打印

    例如,在`log4j.properties`配置文件中,我们可以创建两个Appender,分别设置它们的输出目标为`error.log`和`info.log`: ```properties # 定义一个名为ERROR的Appender,用于记录错误级别及以上的日志 log4j....

    Log4j2简介及与Log4j效率对比

    与Log4j 1.x相比,Log4j2在设计上进行了重大改进,并解决了Logback等其他日志框架中存在的某些体系结构问题。 #### 特性概述 1. **审计功能**:Log4j2设计时考虑到了审计需求,这意味着即使在配置更新过程中,它也...

    log4j-api-2.12.4.ja和log4j-core-2.12.4.jar

    **log4j-core-2.12.4.jar** 则是Log4j 2的核心实现模块,它实现了API模块中定义的接口,并负责实际的日志记录工作,包括日志事件的处理、输出格式化、日志存储以及性能优化等功能。此外,核心模块还包含了一些附加...

    log4j(二):动态配置日志输出路径

    本文将深入探讨如何在Log4j中实现日志输出路径的动态配置。 首先,我们要理解Log4j的核心组件。Log4j主要包括三个关键部分:Logger(日志器)、Appender(输出器)和Layout(布局)。Logger负责生成日志事件,...

    log4j测试代码

    压缩包中的`log4j_app`可能包含一个简单的测试应用,该应用会使用上述配置和代码进行日志记录。通过运行这个测试应用,你可以观察到日志信息按照配置的方式被正确地输出到控制台和文件中。 6. **优点与应用场景** ...

    log4j的eclipse工程,输出到文件的方式配置log4j

    在Log4j中,配置主要通过一个名为`log4j.properties`或`log4j.xml`的配置文件完成。这里我们假设工程中包含`log4j.properties`文件,其主要内容可能如下: ```properties # 设置root logger级别为DEBUG,并将输出...

    log4j乱码问题解决办法

    本文将详细介绍如何通过修改`log4j.properties`配置文件来解决log4j中的乱码问题。 #### 二、问题背景 在使用log4j时,经常会在控制台或日志文件中看到乱码,尤其是在涉及中文字符的情况下。这通常是由于日志系统...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson是Java开发中常用的三个库,它们在软件开发中扮演着重要的角色。Log4j是Apache的一个开源项目,主要用于日志记录,提供了灵活的日志配置,允许开发者根据需求调整日志输出的级别和格式。Log4...

    log4j 源代码 log4j 源代码

    log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码

Global site tag (gtag.js) - Google Analytics