springmvc使用log4j2的配置,以及解决controller日志只有控制台打印日志,不生成本项目文件夹下

文章目录

  • 1.引包
  • 2. log4j2.xml的配置
  • 3.配置文件中的一些说明

  • springmvc使用log4j2的配置,以及只有控制台打印日志,不生成文件的解决方式,mvc使用log4j2时会出现在controller里的日志只会出现在控制台,但不会生成文件的情况。笔者切身经历了一番磨难终于解决,特此留下此篇说明以留给有需要的朋友。

1.引包

笔者用的是gradle作为包管理,maven请自行搜索包依赖依赖包搜索网站

  • 目前最新依赖包
    //log4j  https://github.com/apache/logging-log4j2
    compile 'org.apache.logging.log4j:log4j-api:2.11.1'
    compile 'org.apache.logging.log4j:log4j-core:2.11.1'
    compile 'org.apache.logging.log4j:log4j-web:2.11.1'

2. log4j2.xml的配置

官方配置说明

  • xml文件,位置只要在resource目录下即可,可以自定义文件名或者路径,官方默认要求是必须在resource根目录下,以log4j2开头的文件名,我这里是在resource目录下的log4j2文件夹下。
    如图:
    - 位置
  • 因为位置不在默认地方,所以需要在web.xml里指定配置目录添加如下代码:
    
    <context-param>
        <param-name>log4jConfigurationparam-name>
        <param-value>classpath:log4j2/log4j2.xmlparam-value>
    context-param>
    <context-param>
        <param-name>log4jRefreshIntervalparam-name>
        <param-value>60000param-value>
    context-param>
    <listener>
        <listener-class>org.apache.logging.log4j.web.Log4jServletContextListenerlistener-class>
    listener>
  • log4j2.xml文件


<configuration status="off">
    
    <properties>
        
        <property name="Log_Home">${web:rootDir}/logsproperty>
        
    properties>
    
    
    <appenders>
        
        <Console name="Console" target="SYSTEM_OUT">
            
            

            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/>
        Console>

        
        <RollingFile name="RollingFileInfo" fileName="${Log_Home}/info.${date:yyyy-MM-dd}.log" immediateFlush="true"
                     filePattern="${Log_Home}/$${date:yyyy-MM}/info-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/>
            
            <filters>
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            filters>
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            Policies>
        RollingFile>

        
        <RollingFile name="RollingFileDebug" fileName="${Log_Home}/debug.${date:yyyy-MM-dd}.log" immediateFlush="true"
                     filePattern="${Log_Home}/$${date:yyyy-MM}/debug-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/>
            <filters>
                <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
            filters>
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            Policies>
        RollingFile>

        
        <RollingFile name="RollingFileError" fileName="${Log_Home}/error.${date:yyyy-MM-dd}.log" immediateFlush="true"
                     filePattern="${Log_Home}/$${date:yyyy-MM}/error-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/>
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            Policies>
        RollingFile>

    appenders>
    
    
    
    
    
    
    
    <loggers>
        <logger name="org.springframework.core" level="info">
        logger>
        <logger name="org.springframework.beans" level="info">
        logger>
        <logger name="org.springframework.context" level="info">
        logger>
        <logger name="org.springframework.web" level="info">
        logger>
        
        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileDebug"/>
            <appender-ref ref="RollingFileError"/>
        root>
    loggers>
configuration>

3.配置文件中的一些说明

  • 配置中 将status改为status=debug ,可以看到装配过程非常详细,可以看到装配文件路径以及写文件路径,如果不知道配置的文件存到了哪里都可以在这里看到,如下
    springmvc使用log4j2的配置,以及解决controller日志只有控制台打印日志,不生成本项目文件夹下_第1张图片
  • 没有写文件的话将status改为debug模式,查看路径,文件路径不对是不能写文件的。我的XML内一些变量有何用也做了比较详细的说明,如果还有不懂可以留言交流。
  • 日志生成位置在发布的文件下下,以上配置我的log日志所在位置为如下:
    springmvc使用log4j2的配置,以及解决controller日志只有控制台打印日志,不生成本项目文件夹下_第2张图片
    另附官方web日志配置说明

你可能感兴趣的:(java开发技术,前端,后端)