Maven 使用log4j2进行日志记录
我正在尝试从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j.xml 创建了新的配置文件log4j2.xml 创建jboss-deployment-structure.xml 编辑的pom 环境: 野蝇10 1耳 4战争 文件中未使用web.xml。以前的log4j配置日志仅在EAR中 Log4j2配置文件 Jboss部署结构 新的maven依赖项 我之前说过我在SLF4j中使用log4j1。这些是我所做的更改,我试图从我在网上找到的一个简单配置文件开始。该文件甚至没有创建,但控制台日志工作正常 谢谢Maven 使用log4j2进行日志记录,maven,logging,jboss,log4j,log4j2,Maven,Logging,Jboss,Log4j,Log4j2,我正在尝试从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j.xml 创建了新的配置文件log4j2.xml 创建jboss-deployment-structure.xml 编辑的pom 环境: 野蝇10 1耳 4战争 文件中未使用web.xml。以前的log4j配置日志仅在EAR中 Log4j2配置文件 Jboss部署结构 新的maven依赖项 我之前说过我在SLF4j中使用log4j1。这些是我所做的更改,我试图从我在网上找到的一个简单配置文件开始。该文件甚至没有创建
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Properties>
<Property name="basePath">C:\\logs</Property>
</Properties>
<Appenders>
<RollingFile name="fileLogger" fileName="${basePath}/app-info.log" filePattern="${basePath}/app-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.howtodoinjava" level="debug" additivity="true">
<appender-ref ref="fileLogger" level="debug" />
</Logger>
<Root level="debug" additivity="false">
<appender-ref ref="console" />
</Root>
</Loggers>
对于morw,您可以点击以下链接:-
我使用下面的配置让它与JBoss 7.1.1中的一个webapp一起工作 /src/main/resources/log4j2.xml 在server.log中,我还可以看到以下内容:
15:13:35,937 INFO [stdout] (http--0.0.0.0-8080-2) entered printHello() 2
编辑
如果要使用org.slf4j.Logger记录器,必须将下面的行添加到jboss-deployment-structure.xml中
上述配置将从所有WAR文件打印到同一文件。但是,您可以将log4j2.xml文件配置为基于包名打印到不同的文件。这种方法在本文中进行了解释,您最好在jboss-deployment-structure.xml中排除日志子系统。我本可以这样做作为一个评论,但是粘贴xml不会很好
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
你在哪里等文件?这看起来像一个相对路径,所以可能应用程序没有在那里写入的权限。我正在本地主机中运行。我想我没在等文件。你建议我怎么做?类似的文件名:${jboss.server.log.dir}/log/all.log??您应该尝试将all.log更改为绝对路径,在该路径中,Mac上的每个人都有权限,如/Users/yourname/Desktop/all.log或Windows上的C:\Users\yourname\Desktop\all.log。我的windows路径不是100%正确,但你可以仔细检查。我刚刚在我的mac上做了你的建议,但仍然不起作用:不起作用:我复制了完全正确的配置文件。控制台工作正常,但未创建文件。您使用哪个记录器进行测试?我使用的是:import org.slf4j.Logger;导入org.slf4j.LoggerFactory;我正在从log4j1更改为log4j2 log4j1在排除项下正常工作?@Ricardo在排除项中,直到出现问题,文件未创建。我用的是wildfly 10能有一些影响吗?我将尝试使用urn:jboss:deployment structure:1.2,我刚刚用Wildfly 10.1.0进行了尝试,它仍然有效。您是否更新了log4j2.xml文件?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Properties>
<Property name="basePath">C:\\logs</Property>
</Properties>
<Appenders>
<RollingFile name="fileLogger" fileName="${basePath}/app-info.log" filePattern="${basePath}/app-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.howtodoinjava" level="debug" additivity="true">
<appender-ref ref="fileLogger" level="debug" />
</Logger>
<Root level="debug" additivity="false">
<appender-ref ref="console" />
</Root>
</Loggers>
... above unchanged ...
<File name="MyFile" fileName="/Users/tima/Desktop/all.log" immediateFlush="true" append="true">
... below unchanged ...
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</deployment>
</jboss-deployment-structure>
@Controller
@RequestMapping("/test1")
public class HelloWorldController {
private static final Logger logger = LogManager.getLogger(HelloWorldController.class);
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<Map<String, Object>> printHello() {
logger.info("entered printHello()");
System.out.println("entered printHello() 2");
Map<String, Object> resultMap = new HashMap<String, Object>();
return new ResponseEntity<>(resultMap, HttpStatus.OK);
}
}
$: cat ~/Desktop/all.log
2017-05-11 15:13:35.918 [http--0.0.0.0-8080-2] INFO com.tima.controller.HelloWorldController - entered printHello()
15:13:35,937 INFO [stdout] (http--0.0.0.0-8080-2) entered printHello() 2
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</deployment>
</jboss-deployment-structure>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<sub-deployment name="war-1.war">
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</sub-deployment>
<sub-deployment name="war-2.war">
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</sub-deployment>
...other wars here...
</jboss-deployment-structure>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>