`

log4j 项目中使用

    博客分类:
  • java
 
阅读更多

 前言:log4j 的基本配置就介绍了,在这里只讲实际中使用.根据配置文件解释问题

 

1.使用配置文件log4j.xml 配置日志信息:

 

log4j.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
 debug="false">
 

<!--配置日志输出目的地,及输出形式-->
  <appender name="xmlbusservlet" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="d:/xmlbusservlet.log" />
  <param name="MaxBackupIndex" value="5" />
  <param name="Append" value="true" />
  <param name="Encoding" value="UTF-8" /> 
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %c %m%n" />
  </layout>
 </appender>
 
 <appender name="console" class="org.apache.log4j.ConsoleAppender">
  
  <param name="Target" value="System.out"/> 
        <layout class="org.apache.log4j.PatternLayout"> 
           <param name="ConversionPattern" 
               value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %m%n" />    
        </layout>  
    </appender> 

 

 <!--针对项目具体的类进行日志记录,前面的root为对项目所有用到log的类进行配置,而category 这个标签相当于精细化配置,给特定类,或者特定的包下配置日志,这样该类所有的日志信息就会输出到如下配置的目的地并且输出形式,也配置好了-->
 <category name='"bus.core.chain.server.xml.XMLBusServlet">
   <param name="additivity" value="false" /><!--配置不继承根日志,由于默认的都为继承根日志,

由于根日志已经配置了输出目的地,所以如果不配置则会重复输出-->
   <priority value="DEBUG" /> <!--配置日记优先级别-->
   <appender-ref ref="xmlbusservlet"/>
      <appender-ref ref="console"/>
 </category>

 

  <root> <!-- 表示整个日志文件的根日志记录,如果没特别描述,项目中的所有用到log记录的都会继承这个      root -->
  <level value="error" /> <!-- 根日志的输出级别,如果比error级别低,就不会输出-->
  <appender-ref ref="xmlbusservlet"/> <!--根日志输出的目的地-->
  <appender-ref ref="console"/> <!--根日志输出的目的地-->

 注意:根日志记输出到两个目的地,一个为xmlbusservlet,另一个为:console

  </root>
</log4j:configuration>

log4j.properties:

 

log4j.rootCategory=DEBUG, CONSOLE, LOGFILE (第一个参数表示,根日志的输出级别,后面的参数表示输出的目的地,这里表示根日志输出到两个目的地)
#log4j.rootCategory=INFO, CONSOLE, LOGFILE

log4j.appender.CONSOLE.Encoding=utf-8 (配置输出目的地的编码)
log4j.appender.LOGFILE.Encoding=utf-8

log4j.additivity.com.log4j.dao.UserDao=false(配置不继承根日志)
log4j.logger.com.log4j.dao.UserDao = DEBUG,XXG,XCON(精细化配置,配置具体类的日志信息)
log4j.appender.XXG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.XXG.File=d:/XXG.log
log4j.appender.XXG.Append=true
log4j.appender.XXG.Threshold=DEBUG
log4j.appender.XXG.layout=org.apache.log4j.PatternLayout
log4j.appender.XXG.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %c %m%n

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.XCON=org.apache.log4j.ConsoleAppender
log4j.appender.XCON.target=System.out
log4j.appender.XCON.Threshold=DEBUG
log4j.appender.XCON.layout=org.apache.log4j.PatternLayout
log4j.appender.XCON.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %c %m%n

 

 

总结:

xml配置文件:

   --root(根日志,所有的l日志信息默认输入到这个root级别上)

      ---categroy (跟properties 中logger类似)

        -- appender(输出目的地)

 

properties配置文件:

rootCategory:根日志类似xml的root

logger:类是xml的categroy

 

配置类的日志输出形式:

log4j.logger.com.log4j.dao.UserDao = DEBUG,XXG,XCON(精细化配置,配置具体类的日志信息)
(com.log4j.dao.UserDao  类的日志输出级别为:debug,日志输出 目的地为:XXG,XCON)

log4j.additivity.com.log4j.dao.UserDao=false(配置UserDao类的日志记录不继承根日志)

网上摘抄:

log4j.additivity 是 子Logger 是否继承父Logger 的 输出源(appender)的标志位。具体说,默认情况下,子Logger 会继承父Logger 的appender,也就是说 子Logger 会在父Logger 的appender里输出。若是additivity设为false,则子Logger 只会在自己的appender里输出,而不会在父Logger 的appender里输出。

具体配置如下,需要注意的是, com.wenhq的两个属性additivity和logger必须同时配置,否则不能生效:
log4j.additivity.com.wenhq=false
log4j.logger.com.wenhq =error,wenhq-f        
这样就可以让com.wenhq的日志只输出到wenhq-f指定的appender,而不继承父类的appender.

No related posts.

 

 

 

分享到:
评论

相关推荐

    log4j示例项目

    在Log4j项目中,通常会有一个`log4j.properties`或`log4j.xml`配置文件,用于定义日志行为。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, stdout, FILE log4j.appender.stdout=org....

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

    这个配置引入了 Log4j 依赖项,以便在项目中使用 Log4j。 五、 Log4j 的输出级别和输出目的地 Log4j 的输出级别和输出目的地是配置 Log4j 的两个重要方面。输出级别定义了日志信息的严重程度,而输出目的地定义了...

    老生常谈Log4j和Log4j2的区别(推荐)

    然后使用Logger.getLogger()方法获取日志记录器,而Log4j2需要import org.apache.logging.log4j.Level、org.apache.logging.log4j.LogManager和org.apache.logging.log4j.Logger,使用LogManager.getLogger()方法...

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

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

    Web项目中使用Log4j实例

    本篇文章将深入探讨如何在Web项目中集成并使用Log4j,以便更好地管理和分析应用的日志。 首先,Log4j主要由三部分组成:配置文件(log4j.properties或log4j.xml)、日志记录器(Logger)和日志输出格式(Appender)...

    log4j使用配置方法及项目中的应用

    ### log4j使用配置方法及项目中的应用 #### 概述与背景 在软件开发过程中,日志记录是一项至关重要的任务,它不仅帮助开发者监控代码执行状态,还为后续的故障排查、性能优化和安全审计提供了关键信息。传统的做法...

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

    使用这个BurpSuite插件,可以有效地帮助安全从业者在目标系统中识别出Log4j、Log4j2和Fastjson的使用,并评估是否存在安全风险。无论是老版还是新版的BurpSuite,该插件都能兼容,这意味着它具有良好的兼容性和实用...

    示范如何在android工程中使用log4j记录日志

    然而,由于Android系统对第三方库的限制,直接在Android工程中使用Log4j需要一些额外的步骤。本文将详细讲解如何在Android项目中集成和使用Log4j。 首先,我们需要理解Log4j的基本概念。Log4j主要包括三个核心组件...

    log4j简单使用

    描述中的"NULL"意味着没有额外的具体信息,但我们通常可以从Log4j的使用上下文中了解到,它广泛用于调试、性能分析和系统监控,通过输出详细的运行时信息帮助开发者理解程序状态和追踪问题。 **标签解析** "源码...

    log4j使用教程(详解)

    Log4j是一款广泛使用的开源日志框架,由Apache软件基金会开发。本文将深入探讨Log4j的基本概念、配置与使用方法。 1. **什么是Log4j** Log4j是一个基于Java的日志记录工具,它提供了灵活的控制来记录日志信息,...

    Log4j2结合Slf4j配置使用

    Log4j2 结合 Slf4j 配置使用 Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将...

    Spring项目中怎么配置log4j

    在Spring项目中,我们可以使用Spring的`PropertyPlaceholderConfigurer`来加载外部化的log4j配置,这样在不同环境中可以使用不同的配置文件。在Spring的配置文件`applicationContext.xml`中添加以下代码: ```xml ...

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

    1. **引入依赖**:首先,你需要在项目中引入SLF4J和Log4j的依赖。对于Maven项目,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;org.slf4j &lt;artifactId&gt;slf4j-api &lt;version&gt;1.7.x &lt;groupId&gt;org....

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案.docx

    删除项目中存在的Log4j1.x所必须的log4j和slf4j-log4j12等依赖可以使用以下命令: mvn dependency:tree &gt; tree.log cat tree.log | grep log4j 添加Slf4j和Log4j2的依赖可以使用以下配置: &lt;groupId&gt;org.slf4j ...

    log4j.zip 项目日志

    四、Log4j的使用 在Java代码中,我们可以使用以下方式创建和使用Logger: ```java import org.apache.log4j.Logger; public class MyClass { private static final Logger logger = Logger.getLogger(MyClass....

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

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

    log4j中文手册.pdf

    在Java项目中,通常会有一个名为log4j.properties或log4j.xml的配置文件,这里可以定义log4j的行为。例如,你可以指定哪些类或包的日志级别,决定哪些信息会被记录;也可以设置appender的具体实现,如FileAppender将...

    log4j-2.17.1的jar包,导入即可使用

    3. **导入使用**:在Java项目中使用Log4j非常简单,只需要将`log4j-2.17.1.jar`文件添加到项目的类路径(Classpath)中。对于Maven或Gradle项目,可以在依赖管理中添加相应的依赖条目。 4. **配置文件**:Log4j 的...

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

    在《Log4j将System.out搞到log4j中输出四》这篇博文中,作者可能详细讨论了这些步骤,并可能分享了一些实战经验。通过学习这篇博文,读者可以更深入地了解如何在实际项目中实现这一转换,提升日志管理的效率。 总结...

    log4j使用与java中log4j记录日志如何写入数据库

    本文将详细介绍如何在Java中使用Log4j来记录日志,并将其写入数据库。 首先,我们需要了解Log4j的基本结构。一个简单的Log4j项目通常包含以下几个部分: 1. **配置文件**:Log4j的配置文件通常是`log4j.properties...

Global site tag (gtag.js) - Google Analytics