Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 使用log4j2进行日志记录_Maven_Logging_Jboss_Log4j_Log4j2 - Fatal编程技术网

Maven 使用log4j2进行日志记录

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。这些是我所做的更改,我试图从我在网上找到的一个简单配置文件开始。该文件甚至没有创建

我正在尝试从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>