log4j2.xml 疑难解惑

2023-10-21 15:50
文章标签 xml 解惑 疑难 log4j2

本文主要是介绍log4j2.xml 疑难解惑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

①:当log4j程序在项目中未找到相应的配置时,就会启用默认配置

默认配置会把 console类型的appender关联到root logger上面去,默认启用ERROR的level,使用  (%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n) 格式进行日志输出

https://logging.apache.org/log4j/2.x/manual/configuration.html
Log4j will provide a default configuration if it cannot locate a configuration file.
The default configuration, provided in the DefaultConfiguration class, will set up:

A ConsoleAppender attached to the root logger.
A PatternLayout set to the pattern "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" attached to the ConsoleAppender
Note that by default Log4j assigns the root logger to Level.ERROR.


②:loggers里边的root和logger标签相当于父子标签,root负责所有的级别控制,logger通过包名进行级别控制.

 <Loggers><Logger name="com.foo.Bar" level="trace"><AppenderRef ref="Console"/></Logger><Root level="error"><AppenderRef ref="Console"/></Root></Loggers>

可以通过logger修改spring,hibernate等框架自身日志打印级别

<logger name="org.springframework" level="off"></logger>
<logger name="org.hibernate" level="off"></logger>

当logger和root都应用了相同的appender的时候,日志就会打印两次,这时可以在logger上添加属性additivity="false"来禁止这种情况发生,当然最好是logger中不要添加单独的appender.

<Logger name="com.foo.Bar" level="trace" additivity="false"><AppenderRef ref="Console"/>
</Logger>

https://logging.apache.org/log4j/2.x/manual/configuration.html

Notice that the trace messages from com.foo.Bar appear twice. This is because the appender associated with logger com.foo.Bar is first used, which writes the first instance to the Console. Next, the parent of com.foo.Bar, which in this case is the root logger, is referenced. The event is then passed to its appender, which is also writes to the Console, resulting in the second instance. This is known as additivity. While additivity can be quite a convenient feature (as in the first previous example where no appender reference needed to be configured), in many cases this behavior is considered undesirable and so it is possible to disable it by setting the additivity attribute on the logger to false:


③:log4j2.xml中如何配置不同的日志输出到不同日志文件

    这个分为两种,级别控制和包名控制.

    一,级别控制

          通过过ThresholdFilter进行组合过滤, level代表匹配大于等于该级别的日志,onMatch匹配到做什么, onMismatch没有匹配到做什么,三个值,   ACCEPT 接受, DENY 拒绝, NEUTRAL 中立,即向下执行,在有多个过滤器的时候必须完全匹配才行.下面的配置必须是等于info级别的时候才会写入到文件中.

    二,包名控制

        配置单独的logger,指定日志级别,additivity="false"代表这个包下面的日志不会再root logger中再次输出

         


④:log4j2.xml按(天/小时)记录日志

属性解释
interval(integer)该属性是相对 RollingFile.filePattern 中的 %d{yyyy-MM-dd}值,例:
filePattern=”xxx%d{yyyy-MM-dd}xx” interval=”2” 表示将2天一个日志文件;
filePattern=”xxx%d{yyyy-MM-dd-HH}xx” interval=”1”表示一个小时一个日志文件
modulate(boolean)以0点为边界进行偏移计算(是否以0点为参考)


⑤:log4j2指定配置文件位置

官方文档:http://logging.apache.org/log4j/2.x/faq.html#config_location

               http://logging.apache.org/log4j/2.x/manual/webapp.html#ContextParams

  1. :在项目的resource目录下(classpath)添加log4j2.component.properties文件
  2. 在web.xml中配置                                                                                                                                                                      

 

 

这篇关于log4j2.xml 疑难解惑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255378

相关文章

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

intellij idea generatorConfig.xml

generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-ge

xml概论

以下内容摘录自W3School 一、XML的特性 xml是用来传输和存储数据的,本身对数据没有任何操作。在这里要区别一下html,html是用来显示数据的。xml的焦点是数据内容,html的焦点是数据外观。 下面是xml的定义: •XML 指可扩展标记语言(EXtensible Markup Language) •XML 是一种标记语言,很类似 HTML

XML的创建

这里使用的是org.dom4j的jar包来完成xml格式数据的创建。 import java.io.IOException;import java.io.StringWriter;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.

Spring下自定义xml标签

dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子。 一 编写模型类 1 package com.hulk.testdubbo.model;2 3 public class Hero {4 private String name;5 private int

xml reader

// TODO Auto-generated method stub

spring事务属性的xml格式配置

实际是使用代理做的事务优化 <!--配置事务的属性--><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!--匹配所有以add开头的方法--><tx:method name="add*" propagation="REQUIRED" /> <tx:metho

在struts.xml中,如何配置请求转发和请求重定向!

<span style="font-size:18px;"><span style="white-space:pre"> </span><!--<strong>下面用请求转发action </strong>,<strong>这样过去id不会丢</strong>,如果用重定向的话,id会丢 --><result name="updatePopedom"<span style="color:#ff00

xml数据作为表单参数在网络传递也需要用urlencode处理

xml数据作为表单参数在网络传递也需要用urlencode处理。才能确保数据被正确的传递和解析。需要加深对数据在web上传递的理解。