log4j2 应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HistoryCreator/article/details/82184803

1.添加依赖 (pom.xml)


        <!--log4j2-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-1.2-api</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.11.0</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency >
            <groupId >javax.mail </groupId >
            <artifactId >mail </artifactId >
            <version >1.4.5 </version >
        </dependency >
        <dependency >
            <groupId >com.sun.mail </groupId >
            <artifactId >javax.mail </artifactId >
            <version >1.5.4 </version >
        </dependency >

2.配置日志策略(log4j2.xml)


<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <properties>
        <property name="logPath">/opt/tomcat7/logs/creditplatform/${sys:logName}</property>
        <property name="errorLogPath">/opt/tomcat7/logs/creditplatform/error/${sys:logName}</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout charset="UTF-8" pattern="[%5p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n" />
        </Console>
        <RollingFile name="debugFile" fileName="${logPath}" filePattern="${logPath}-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout charset="UTF-8" pattern="[%5p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="200 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20">
                <Delete basePath="${logPath}" maxDepth="2">
                    <IfFileName glob="*/app*.log.gz" />
                    <IfLastModified age="30D" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <!--如果需要配置多个Rollingfile地址,还需要在root下添加appender-ref ref="RollingFile1"/>只显示error级别的信息-->
        <RollingFile name="errorFile" fileName="${errorLogPath}" filePattern="${errorLogPath}-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout charset="UTF-8" pattern="[%5p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="50MB"/>
            </Policies>
        </RollingFile>

        <SMTP name="Mail" subject="Error Log" to="[email protected]" from="[email protected]"
              smtpHost="smtp.mxhichina.com" smtpUsername="...." smtpDebug="true"
              smtpPassword="......" smtpPort="25" bufferSize="50">
        </SMTP>
    </Appenders>

    <Loggers>
        <!-- 第三方日志系统 -->
        <logger name="org.springframework.core" level="info"/>
        <logger name="org.springframework.beans" level="info"/>
        <logger name="org.springframework.context" level="info"/>
        <logger name="org.springframework.web" level="info"/>
        <logger name="org.apache.http" level="warn"/>
        <logger name="org.apache.zookeeper" level="ERROR" additivity="false"></logger>
        <Root level="DEBUG">
            <AppenderRef ref="debugFile" />
            <AppenderRef level="ERROR" ref="errorFile" />
            <AppenderRef ref="Console" />
            <!--<AppenderRef level="ERROR" ref="Mail"/>-->
        </Root>
    </Loggers>
</Configuration>

3.动态修改日志文件名(自定义listenter中配置)

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        try {
            //log4j2相关设置
            System.setProperty("logName", InetAddress.getLocalHost().getHostName()+".log");
            File file = new File(this.getClass().getClassLoader().getResource("").getPath()+"log4j2.xml");
            LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
            ctx.setConfigLocation(file.toURI());
            ctx.reconfigure();           
        } catch (Exception e) {
           Log.error(e.getMessage(),e);
        }       
    }

猜你喜欢

转载自blog.csdn.net/HistoryCreator/article/details/82184803