zoukankan      html  css  js  c++  java
  • springboot成神之——log4j2的使用

    本文介绍如何在spring-boot中使用log4j2

    说明

    log4j2本身使用是非常简单的,如果你仅仅是用来记录程序日志信息,花上10分钟看看本文就能达到日常开发所需
    
    如果你寻找其他高级的用法,log4j2官网提供了一切
    
    log4j2核心就是配置文件,本文列举的配置文件,将不同级别的日志输出到不同的文件,并且展示了如何导出html
    
    log4j2配置文件一般放置于resource目录下面,官网提供了xml,json,properties形式的配置方式,本文只用xml
    

    依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    	<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-log4j2</artifactId>
    	<version>2.0.5.RELEASE</version>
    </dependency>
    

    日志记录语句

    public class TestController {
        private static final Logger logger = LogManager.getLogger(TestController.class);
    
        public void test(){
            logger.debug("Hello {} !", "World");
            logger.info("Info log");
            logger.warn("warning!");
            logger.error("Error!!!");
            logger.fatal("Fatal error!!!!!");
        }
    }
    

    log4j2配置文件

    // -----------------核心配置说明-------------------
        Properties 是用来定义共用属性的,也就是在其他配置标签中直接使用
            %d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %C{3}.%M(%F:%L) %m%n 这些东西,都是log4j2内置的信息展示规则,日常开发,这些够用了
        Appenders 白话讲,就是指定不同的输出方式
        Console 就是指定控制台输出
        RollingFile 就是输出到指定文件
        filePattern 指定回滚的文件名,回滚也就是当前的日志文件不满足Policies和DefaultRolloverStrategy的条件时,重新命名,并且生产新的文件
        TimeBasedTriggeringPolicy的interval=1表示1天
        LevelRangeFilter 就是指定什么等级的日志
        Loggers 顾名思义,就是配置具体需要记录日志的入口(类)
    // -----------------核心配置说明-------------------
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN" monitorInterval="30">
     
        <!-- Logging Properties -->
        <Properties>
            <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %C{3}.%M(%F:%L) %m%n</Property>
            <Property name="APP_LOG_ROOT">C:\Users\26401\Desktop\logs</Property>
        </Properties>
         
        <Appenders>
         
            <!-- Console Appender -->
            <Console name="Console" target="SYSTEM_OUT" follow="true">
                <PatternLayout pattern="${LOG_PATTERN}"/>
            </Console>
    
            <RollingFile name="fileLogger" fileName="${APP_LOG_ROOT}/app-info.html"
                         filePattern="${APP_LOG_ROOT}/app-info-%d{yyyy-MM-dd}.html">
                <HTMLLayout charset="UTF-8" title="Howtodoinjava Info Logs" locationInfo="true" />
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                    <SizeBasedTriggeringPolicy size="10 MB" />
                </Policies>
            </RollingFile> 
            <!-- File Appenders on need basis -->
            <RollingFile name="frameworkLog" fileName="${APP_LOG_ROOT}/app-framework.log"
                filePattern="${APP_LOG_ROOT}/app-framework-%d{yyyy-MM-dd}-%i.log">
                <LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="19500KB" />
                </Policies>
                <DefaultRolloverStrategy max="10"/>
            </RollingFile>
             
            <RollingFile name="debugLog" fileName="${APP_LOG_ROOT}/app-debug.log"
                filePattern="${APP_LOG_ROOT}/app-debug-%d{yyyy-MM-dd}-%i.log">
                <LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="19500KB" />
                </Policies>
                <DefaultRolloverStrategy max="10"/>
            </RollingFile>
             
            <RollingFile name="infoLog" fileName="${APP_LOG_ROOT}/app-info.log"
                filePattern="${APP_LOG_ROOT}/app-info-%d{yyyy-MM-dd}-%i.log" >
                <LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="19500KB" />
                </Policies>
                <DefaultRolloverStrategy max="10"/>
            </RollingFile>
             
            <RollingFile name="errorLog" fileName="${APP_LOG_ROOT}/app-error.log"
                filePattern="${APP_LOG_ROOT}/app-error-%d{yyyy-MM-dd}-%i.log" >
                <LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="19500KB" />
                </Policies>
                <DefaultRolloverStrategy max="10"/>
            </RollingFile>
             
            <RollingFile name="perfLog" fileName="${APP_LOG_ROOT}/app-perf.log"
                filePattern="${APP_LOG_ROOT}/app-perf-%d{yyyy-MM-dd}-%i.log" >
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="19500KB" />
                </Policies>
                <DefaultRolloverStrategy max="1"/>
            </RollingFile>
             
            <RollingFile name="traceLog" fileName="${APP_LOG_ROOT}/app-trace.log"
                filePattern="${APP_LOG_ROOT}/app-trace-%d{yyyy-MM-dd}-%i.log" >
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="19500KB" />
                </Policies>
                <DefaultRolloverStrategy max="1"/>
            </RollingFile>
             
        </Appenders>
     
        <Loggers>
             
            <Logger name="com.springlearn.learn.controller" additivity="false" level="debug">
                <AppenderRef ref="debugLog" />
                <AppenderRef ref="infoLog"  />
                <AppenderRef ref="errorLog" />
                <AppenderRef ref="Console"  />
                <AppenderRef ref="fileLogger"/>
            </Logger>
             
            <Logger name="com.springlearn.learn" additivity="false" level="info">
                <AppenderRef ref="perfLog" />
                <AppenderRef ref="Console"/>
            </Logger>
                     
            <Root level="warn">
                <AppenderRef ref="Console"/>
            </Root>
     
        </Loggers>
     
    </Configuration>
    
  • 相关阅读:
    python高级编程
    django笔记
    sublime ide
    python3 django mysql
    python win
    linux时区设置
    在实际应用中如何实现切圆角的功能
    display和visiblity在应用中使用哪个好
    看懂UML类图和时序图
    解决Xcode7.2真机调试出现:The account “” has no team with ID “”
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/9651205.html
Copyright © 2011-2022 走看看