복붙노트

[SPRING] Log4j2를 이용한 Spring의 로깅

SPRING

Log4j2를 이용한 Spring의 로깅

Log4j2를 사용하여 Spring 로그를 파일 및 콘솔로 인쇄하려고합니다. 내 Log4j2 구성에 문제가있는 것 같습니다. 나는 그것을 작동시킬 수 없었다. 내 log4j2.xml 파일에이 구성이 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="5">
    <properties>
        <property name="patternlayout">%d{ISO8601} [%t] %-5level %logger{36} - %msg%n%throwable{full}</property>
        <property name="filename">${env:MY_ROOT}/logs/mylog.log</property>
        <property name="filenamePattern">${env:MY_ROOT}/logs/mylog-%d{yyyy-dd-MM}-%i.log.gz</property>
    </properties>
    <appenders>
        <appender name="Console" type="Console" target="SYSTEM_OUT">
            <layout type="PatternLayout" pattern="${patternlayout}" />
        </appender>
        <appender name="File" type="RollingFile" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true"
        append="true">
            <layout type="PatternLayout" pattern="${patternlayout}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50 MB" />
            </Policies>
            <DefaultRolloverStrategy max="30" />
        </appender>
        <appender name="AsynchFile" type="asynch" blocking="true" bufferSize="128">
            <appender-ref ref="File" />
        </appender>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="Console" />
            <appender-ref ref="AsynchFile" />
        </root>
        <logger name="org.springframework.beans">
            <appender-ref ref="Console" />
            <appender-ref ref="AsynchFile" />
        </logger>
    </loggers>
</configuration>

이들은 내가 pom 파일에 가지고있는 의존성이다 : (아마 그들 중 일부는 필요하지 않다)

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-api</artifactId>
 <version>1.6.6</version>
</dependency>

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-log4j12</artifactId>
 <version>1.6.6</version>
</dependency>

<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-api</artifactId>
 <version>2.0-beta5</version>
</dependency>

<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-core</artifactId>
 <version>2.0-beta5</version>
</dependency>
<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-1.2-api</artifactId>
 <version>2.0-beta5</version>
</dependency>

<dependency>
 <groupId>com.lmax</groupId>
 <artifactId>disruptor</artifactId>
 <version>3.0.0.beta3</version>
</dependency>

자바 코드에서 봄과 관련된 일은하지 않습니다. 내 봄 구성을 읽고 콩을로드 아파치 카멜에서 메인 클래스를 사용하고 있습니다.

내가 뭘 잘못하고 있죠? 감사!

편집 : 모든 출력 (콘솔 또는 파일)에서 스프링 로그가 표시되지 않습니다. 그러나, 나는 내 자바 코드에서 만드는 로그를 얻을 수있다. 이 설명이 도움이되기를 바랍니다.

해결법

  1. ==============================

    1.pom의 종속성을 보면 slf4j-log4j12가 있습니다. 이로 인해 slf4j API에 대한 로그 문이 Log4j-1.2 구현으로 라우팅됩니다. 아마도 Log4j-2.0 구현물로 보내주기를 원할 것입니다. slf4j-log4j12를 log4j-slf4j-impl으로 대체하고 다시 시도 할 수 있습니까?

    pom의 종속성을 보면 slf4j-log4j12가 있습니다. 이로 인해 slf4j API에 대한 로그 문이 Log4j-1.2 구현으로 라우팅됩니다. 아마도 Log4j-2.0 구현물로 보내주기를 원할 것입니다. slf4j-log4j12를 log4j-slf4j-impl으로 대체하고 다시 시도 할 수 있습니까?

  2. ==============================

    2.이 문제는 스프링 사용 common-logging 1.X 때문에 발생합니다. 따라서이 로깅을 Log4j 2로 라우팅하려면 pom.xml에 종속성을 추가해야합니다

    이 문제는 스프링 사용 common-logging 1.X 때문에 발생합니다. 따라서이 로깅을 Log4j 2로 라우팅하려면 pom.xml에 종속성을 추가해야합니다

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>2.1</version>
     </dependency>
    

    공통 로깅 1.X 종속성을 제거하지 마십시오.

  3. from https://stackoverflow.com/questions/16341020/logging-spring-using-log4j2 by cc-by-sa and MIT license