Spring Boot怎样使用log4j输出日志?

Spring89 2018-02-05 03:39:02
在Spring Boot里面,不想用默认的logback来记录日志,希望使用log4j来输出日志,按照网上的配置,都做了,而是没有效果!大神帮忙看看问题出在哪!
以下是代码和配置截图:

Maven配置:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 去除logback的依赖 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>


log4j.properties


Java 代码片段:


控制台的输出:

这里的输出配置并不是Log4j的,还是logback的,真不知道问题出在哪?
...全文
925 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Spring89 2018-02-11
  • 打赏
  • 举报
回复
引用 7 楼 weixin_38762114 的回复:
LogBack似乎不在WEB启动器中,你可以看一下依赖树是不是别的地方还有依赖logging启动器的
问题已经解决了,logback的排除依赖不能是spring-boot-starter-web
  • 打赏
  • 举报
回复
我专门用1.5.9版本的测试了一下,添加mybatis-starter的时候依赖了starter-logging,将其排除后,不需要再添加其他的设置,直接在类路径下放一个log4j2.xml就可以了
  • 打赏
  • 举报
回复
LogBack似乎不在WEB启动器中,你可以看一下依赖树是不是别的地方还有依赖logging启动器的
Spring89 2018-02-07
  • 打赏
  • 举报
回复
引用 2 楼 xwn_2016 的回复:
加上这个配置看看 logging.config=classpath\:log4j2.xml
我指定过的,也不行。不知道是不是我配置有问题,或者是jar包有冲突导致!能帮我看看么
Spring89 2018-02-07
  • 打赏
  • 举报
回复
引用 4 楼 splendid_java 的回复:
[quote=引用 3 楼 liutianxiong888 的回复:] [quote=引用 1 楼 splendid_java 的回复:] 1、先排除starter-logging,使用exclusion。 2、在resource下新建log4j.xml,内容大致:

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="INFO">  
    <Appenders>  
        <Console name="Console" target="
" follow="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </Console>  
        <File name="File" fileName="logs/marketing.log" append="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </File>  
    </Appenders>  
    <Loggers>  
        <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />  
        <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />  
        <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />  
        <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />  
        <Logger name="org.springframework" level="info" />  
        <Logger name="com.github" level="debug" />  
        <Root level="info">  
            <AppenderRef ref="Console" />  
        </Root>  
    </Loggers>  
</Configuration> 
3、测试 private Logger log= LoggerFactory.getLogger(ControllerTest.class); log.info("......................);
我也是像这样弄的呀,有排除依赖啊。log4j的包是导入这两个吗?

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
[/quote] 参考这个就可以。 http://blog.csdn.net/lw_power/article/details/47168617[/quote] 不行,我不知道是不是我的配置有问题能帮我看看么,我排除依赖后,那些包还是在maven里面。


<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<start-class>com.zh.wuye.DemoApplication</start-class>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<!-- 去除logback的依赖 -->
			<exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                
            </exclusions>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
	
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-lang3</artifactId>
		    <version>3.7</version>
		</dependency>
	
		<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
		<dependency>
		    <groupId>commons-beanutils</groupId>
		    <artifactId>commons-beanutils</artifactId>
		</dependency>
		
		<!-- 添加log4j的依赖 -->
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j -->
	  <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-log4j</artifactId>
		    <version>1.3.8.RELEASE</version>
		</dependency> 
 
	 	<!-- <dependency>
		   <groupId>org.slf4j</groupId>
		   <artifactId>slf4j-api</artifactId>
		</dependency> -->
		
		<!-- <dependency>
		   <groupId>org.slf4j</groupId>
		   <artifactId>slf4j-log4j12</artifactId>
		</dependency>  -->
		
		<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.4</version>
			<classifier>jdk15</classifier><!-- json需指定jdk的版本 -->
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		
		
	</dependencies>

ZHOU西口 2018-02-06
  • 打赏
  • 举报
回复
引用 3 楼 liutianxiong888 的回复:
[quote=引用 1 楼 splendid_java 的回复:] 1、先排除starter-logging,使用exclusion。 2、在resource下新建log4j.xml,内容大致:

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="INFO">  
    <Appenders>  
        <Console name="Console" target="
" follow="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </Console>  
        <File name="File" fileName="logs/marketing.log" append="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </File>  
    </Appenders>  
    <Loggers>  
        <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />  
        <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />  
        <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />  
        <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />  
        <Logger name="org.springframework" level="info" />  
        <Logger name="com.github" level="debug" />  
        <Root level="info">  
            <AppenderRef ref="Console" />  
        </Root>  
    </Loggers>  
</Configuration> 
3、测试 private Logger log= LoggerFactory.getLogger(ControllerTest.class); log.info("......................);
我也是像这样弄的呀,有排除依赖啊。log4j的包是导入这两个吗?

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
[/quote] 参考这个就可以。 http://blog.csdn.net/lw_power/article/details/47168617
xwn_2016 2018-02-06
  • 打赏
  • 举报
回复
加上这个配置看看 logging.config=classpath\:log4j2.xml
Spring89 2018-02-06
  • 打赏
  • 举报
回复
引用 1 楼 splendid_java 的回复:
1、先排除starter-logging,使用exclusion。 2、在resource下新建log4j.xml,内容大致:

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="INFO">  
    <Appenders>  
        <Console name="Console" target="
" follow="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </Console>  
        <File name="File" fileName="logs/marketing.log" append="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </File>  
    </Appenders>  
    <Loggers>  
        <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />  
        <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />  
        <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />  
        <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />  
        <Logger name="org.springframework" level="info" />  
        <Logger name="com.github" level="debug" />  
        <Root level="info">  
            <AppenderRef ref="Console" />  
        </Root>  
    </Loggers>  
</Configuration> 
3、测试 private Logger log= LoggerFactory.getLogger(ControllerTest.class); log.info("......................);
我也是像这样弄的呀,有排除依赖啊。log4j的包是导入这两个吗?

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
ZHOU西口 2018-02-05
  • 打赏
  • 举报
回复
1、先排除starter-logging,使用exclusion。 2、在resource下新建log4j.xml,内容大致:

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="INFO">  
    <Appenders>  
        <Console name="Console" target="
" follow="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </Console>  
        <File name="File" fileName="logs/marketing.log" append="true">  
            <PatternLayout>  
                <pattern>%d{yyyy-MM-dd HH:mm:ss}</pattern>  
            </PatternLayout>  
        </File>  
    </Appenders>  
    <Loggers>  
        <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />  
        <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />  
        <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />  
        <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />  
        <Logger name="org.springframework" level="info" />  
        <Logger name="com.github" level="debug" />  
        <Root level="info">  
            <AppenderRef ref="Console" />  
        </Root>  
    </Loggers>  
</Configuration> 
3、测试 private Logger log= LoggerFactory.getLogger(ControllerTest.class); log.info("......................);

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧