由于要把logback框架升级到log4j2,把配置改了一遍。发现property属性总是配置失败。跟踪了代码,发现log4j2的小伙砸写的代码有问题。但不知道其他人的配置为什么能工作。
logback配置
<property name="LICAI_LOG_HOME" value="/data/logs/tomcat/licaiweb" />
先上正确的log4j2配置
<Properties> <Property name="LICAI_LOG_HOME"> <![CDATA[/data/logs/tomcat/licaiweb]]> </Property> </Properties>
跟踪代码发现了问题。
private void constructHierarchy(final Node node, final Element element) { processAttributes(node, element); final StringBuilder buffer = new StringBuilder(); final NodeList list = element.getChildNodes(); final List<Node> children = node.getChildren(); for (int i = 0; i < list.getLength(); i++) { final org.w3c.dom.Node w3cNode = list.item(i); if (w3cNode instanceof Element) { final Element child = (Element) w3cNode; final String name = getType(child); final PluginType<?> type = pluginManager.getPluginType(name); final Node childNode = new Node(node, name, type); constructHierarchy(childNode, child); if (type == null) { final String value = childNode.getValue(); if (!childNode.hasChildren() && value != null) { node.getAttributes().put(name, value); } else { status.add(new Status(name, element, ErrorType.CLASS_NOT_FOUND)); } } else { children.add(childNode); } } else if (w3cNode instanceof Text) { final Text data = (Text) w3cNode; buffer.append(data.getData()); } } //property没有子元素的时候,value="",非null final String text = buffer.toString().trim(); if (text.length() > 0 || (!node.hasChildren() && !node.isRoot())) { node.setValue(text); } }
public class PluginValueVisitor extends AbstractPluginVisitor<PluginValue> { public PluginValueVisitor() { super(PluginValue.class); } @Override public Object visit(final Configuration configuration, final Node node, final LogEvent event, final StringBuilder log) { final String name = this.annotation.value(); //发现value非null,就返回原来的value了,即"" final String rawValue = node.getValue() != null ? node.getValue() : removeAttributeValue(node.getAttributes(), "value"); final String value = this.substitutor.replace(event, rawValue); StringBuilders.appendKeyDqValue(log, name, value); return value; } }
相关推荐
Log4j 在 SSM 整合中的配置详解 Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM...
### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...
这个“log4j2的配置文件完整版”应该包含了Log4j2所有可能的配置选项,允许开发者精细控制日志输出的行为。 在Log4j2中,配置文件是XML、JSON或YAML格式的文本文件,它定义了日志的级别、输出目的地、布局格式以及...
Log4j2的配置文件通常为`log4j2.xml`或`log4j2.json`,提供了丰富的配置选项。以下是一个基本的`log4j2.xml`配置示例: ```xml [%t] %-5level %logger{36} - %msg%n"/> ...
总结,log4j和iBatis的配置是Java应用的基础,正确设置可以优化开发效率,提高问题排查的便利性,同时也能确保数据库操作的高效稳定。通过理解并熟练运用这两个框架的配置,开发者能更好地掌控应用的运行状态和...
- **配置文件格式**:Log4j2 支持 XML、JSON 和 YAML 格式的配置文件。 - **异步日志记录**:Log4j2 支持内置的异步日志记录功能,提高了应用程序的响应速度。 #### 4. API Log4j2 提供了一个丰富的 API,其中包括...
在Spring项目中配置log4j是一项基础且重要的工作,它能帮助我们记录应用程序的运行日志,便于调试、排查问题和性能分析。Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在...
2. **配置文件**:Log4j的配置通常通过`log4j.properties`或`log4j.xml`文件进行,其中包含了关于logger级别、appender和layout的定义。 3. **日志级别**:Log4j支持多个日志级别,包括DEBUG、INFO、WARN、ERROR、...
### log4j配置与使用方法 #### 一、log4j简介 log4j是Apache的一个开源项目,通过使用log4j,开发者能够控制日志信息的生成、等级以及输出的目的地。它允许用户根据不同的环境调整日志的级别,从而帮助开发者在...
总之,将Spring的日志配置为Log4j,涉及到引入Log4j库、编写`log4j.properties`配置文件、以及在Spring配置文件中声明使用Log4j。理解这些步骤和配置项对于优化日志记录,排查问题以及监控系统运行状态至关重要。
Log4j 支持两种格式的配置文件:XML 格式和 Java 的 property 格式。 一个简单的配置文件示例: log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender....
Log4j 支持两种格式的配置文件:XML 格式和 Java 的 property 格式。配置文件是 Log4j 的核心组件之一,通过配置文件可以灵活地控制日志的输出。 Log4j 的配置方式 Log4j 提供了多种配置方式,包括: * 通过配置...
这样,我们就可以在log4j加载配置文件之前,先用System.setProperty ("WORKDIR", WORKDIR);设置好根路径,此操作可通过一初始的servlet进行。 方法二、 可以使用服务器环境变量 log4j的配置文件支持服务器的vm的...
如果你希望自定义配置文件的位置,可以通过系统属性`log4j.configuration`来指定,例如`System.setProperty("log4j.configuration", "path/to/your/log4j.properties")`。 总的来说,Log4j是一个强大且灵活的日志...
2. **配置log4j**:创建一个`log4j.properties`或`log4j.xml`配置文件,指定日志级别、输出目的地和格式。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, FILE log4j.appender.FILE=org...
2. **环境配置**:为了让项目能够识别到Log4j,在项目的`CLASSPATH`中加入log4j.properties文件。该文件用于配置Log4j的行为,包括日志级别、输出目的地等。 #### 三、Log4j.properties配置详解 在Log4j的使用过程...
本文主要讨论了在Log4j配置中如何处理相对路径的问题,以适应不同环境下的日志文件存储需求。 一、使用系统属性设置路径 在Log4j的配置文件(通常是`log4j.properties`)中,可以使用`${}`语法引用系统属性。例如...
2. 创建`log4j.properties`文件,并配置日志级别、输出目的地和格式。例如: ``` log4j.rootLogger=DEBUG, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=...
Spring框架是Java领域广泛使用的轻量级框架,而Log4j则是日志记录领域的经典工具,提供了丰富的日志配置和管理功能。本实例结合Spring和Log4j,将为你提供一个实用的日志解决方案。 首先,我们要理解Spring是如何...
四、Log4j 的配置方式 下面是一个简单的 Log4j 配置文件示例: log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j....