## 에러내용

ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...

 

스프링 시작시 위와같은 에러가 발생했습니다.

아래와 같이 조치 해 보았으나 해결할 수 없었습니다.

https://cnpnote.tistory.com/entry/SPRING-Log4j2%EA%B0%80-Spring-%EB%B6%80%ED%8A%B8-%EB%A1%9C%EA%B9%85-%EA%B5%AC%ED%98%84%EC%9D%84-%EC%B0%BE%EC%9D%84-%EC%88%98-%EC%97%86%EC%9D%8C

 

 

 

제 경우에는 log4j2 설치를 잘못해서 발생했던 에러 입니다.

- 전자정부 프래임워크를 로드를 했으나 사용하지는 않고, 스프링으로만 사용 했음

- log4j  ->  log4j2  변경중이었으나 최초 log4j 설치를 잘못 했었음

- log4j2 + sql 쿼리를 로그에 출력 해야 함

 

라이브러리 설치부터 시작하겠습니다. maven을 사용 합니다.

 

## pom.xml

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.8.2</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.8.2</version>
</dependency>

 

## context_datasource.xml

## 수정전
<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
	<property name="driverClassName" value="${mssql.driver}"/>
 	<property name="url" value="${mssql.url}"/>
	<property name="username" value="${mssql.username}" />
 	<property name="password" value="${mssql.password}" />
</bean>


## 수정후
<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	<property name="driverClassName" value="${mssql.driver}"/>
 	<property name="url" value="${mssql.url}"/>
	<property name="username" value="${mssql.username}" />
 	<property name="password" value="${mssql.password}" />
</bean>
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
    <constructor-arg ref="dataSourceSpied" />
    <property name="logFormatter">
        <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
			<property name="loggingType" value="MULTI_LINE" />
			<property name="sqlPrefix" value="SQL : "/>
		</bean>
	</property>
</bean>

 

 

## src/main/resources/log4j2.xml   위치가 맞지 않으면 읽지 못하더군요

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %5p [%c] %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="java.sql" level="INFO" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="egovframework" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <!-- log SQL with timing information, post execution -->
        <Logger name="jdbc.sqltiming" level="INFO" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="org.springframework" level="INFO" additivity="false">
            <AppenderRef ref="console" />
        </Logger>

		<logger name="jdbc.sqlonly">
			<level value="debug"/>
		</logger>		   
		<logger name="net.sf.log4jdbc" additivity="false">
			<level value="info"/>
		</logger>
			    		
        <Root level="INFO">
            <AppenderRef ref="console" />
        </Root>
    </Loggers>
</Configuration>

 

## src/main/resources/log4j2.properties  

name=PropertiesConfig
property.filename = logs
appenders = console, file

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/propertieslogs.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

loggers=file
logger.file.name=com.controller
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

xml, properties 파일들은 컨텍스트 경로에 있어야 하고, maven에서는 리소스 폴더 (대부분 src / main / resources)에 있어야합니다.  이것 때문에 며칠을 고생했는지 ㅜ.ㅜ

https://www.foxtoon.com/profile/fY0A/illust/9217

이 예제를 사용하려면 logger.file.name = com.controller 를 본인의 패키지 이름으로 지정해야합니다. 그렇게하지 않으면 파일에 로그가 표시되지 않습니다.

+ Recent posts