zoukankan      html  css  js  c++  java
  • log4j2

    log4j2

    maven依赖

    		<!-- slf4j 规范定义和桥架 -->
    		<dependency>
    			<groupId>org.slf4j</groupId>
    			<artifactId>jcl-over-slf4j</artifactId>
    			<version>1.7.25</version>
    		</dependency>
    		<!-- log4j2 实现 -->
    		<dependency>
    			<groupId>org.apache.logging.log4j</groupId>
    			<artifactId>log4j-slf4j-impl</artifactId>
    			<version>2.11.1</version>
    		</dependency>
    

    日志等级

    日志级别
    共有 共有 8 个级别 个级别, , 按照从低到高为: :All < Trace < Debug < Info < Warn < Error <
    Fatal < OFF.
    All: 最低等级的,用于打开所有日志记录.
    Trace:是追踪 是追踪 , 就是程序推进以下 ,你就可以写个 你就可以写个 trace 输出 输出 ,所以 所以 trace 应该 应该
    会特别多,不过没关系,我们可以设置最低日志级别不让他输出 会特别多,不过没关系,我们可以设置最低日志级别不让他输出.
    Debug: 指出细粒度信息事件对调试应用程序是非常有帮助的.
    Info: 消息在粗粒度级别上突出强调应用程序的运行过程.
    Warn: 输出警告及 warn  以下级别的日志.
    Error: 输出错误信息日志.
    Fatal: 输出每个严重的错误事件将会导致应用程序的退出的日志.
    OFF: 最高等级的,用于关闭所有日志记录.
    

    配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!--设置log4j2的自身log级别为warn-->
    <configuration status="warn">
    
       <!-- 自定义变量 -->
       <Properties>
    		<Property name="filedir">logs</Property>
    	</Properties>
    
    
        <appenders>
            <console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            </console>
    
            <RollingFile name="RollingFileInfo" fileName="${filedir}/info.log"
                         filePattern="${filedir}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
                  <!-- 过滤规则-->
                <Filters>
                    <ThresholdFilter level="INFO"/>
                    <!-- 更高级别的忽略 -->
                    <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                  <!-- 日志策略-->
                <Policies>
                 <!-- 每天生成一个日志文件 --> 
                 <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <!-- 限制单个文件大小 -->  
                 <SizeBasedTriggeringPolicy size="100 MB"/>
                </Policies>
                 <!-- 最大保存文件数 -->  
                <DefaultRolloverStrategy max="60" /> 
            </RollingFile>
    
            <RollingFile name="RollingFileWarn" fileName="${filedir}/warn.log"
                         filePattern="${filedir}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
                <Filters>
                    <ThresholdFilter level="WARN"/>
                    <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                <Policies>
                    <TimeBasedTriggeringPolicy/>
                    <SizeBasedTriggeringPolicy size="100 MB"/>
                </Policies>
            </RollingFile>
    
            <RollingFile name="RollingFileError" fileName="${filedir}/error.log"
                         filePattern="${filedir}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
                <ThresholdFilter level="ERROR"/>
                <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                <Policies>
                    <TimeBasedTriggeringPolicy/>
                    <SizeBasedTriggeringPolicy size="100 MB"/>
                </Policies>
            </RollingFile>
    
        </appenders>
    
        <loggers>
            <root level="debug">
                <appender-ref ref="Console"/>
                <appender-ref ref="RollingFileInfo"/>
                <appender-ref ref="RollingFileWarn"/>
                <appender-ref ref="RollingFileError"/>
            </root>
        </loggers>
    
    </configuration>
    

    代码实例

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class Log4JTest {
    	
    	private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class);
    	
    	public static void main(String[] args) {
    		while(true) {
    			try {
    				Thread.sleep(3000);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    		logger.debug("debug");
    		logger.info("info");
    		logger.warn("warn");
    		logger.error("error");
    		}
    	}
    
    }
    

    作者:我是刘先生
    地址:https://www.cnblogs.com/cekaigongchengshi/
    文章转载请标明出处,如果,您认为阅读这篇博客让您有些收获,不妨点击一下推荐按钮,据说喜欢分享的,后来都成了大神

    欢迎扫码关注微信公众号
  • 相关阅读:
    找到数组或整数列表中连续子序列的最大和
    编写一个调用的函数,该函数接受一个括号字符串,并确定括号的顺序是否有效
    SRS流媒体服务器搭建及拉取摄像头视频流经opencv处理后再推流至SRS
    (pymysql.err.OperationalError) (1055, "Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column
    微信商户转帐到个人零钱
    双色球1千万,等你来拿!
    python后端开发面试总结
    alipay接入步骤
    Mongodb简单操作
    flask基础
  • 原文地址:https://www.cnblogs.com/cekaigongchengshi/p/14069655.html
Copyright © 2011-2022 走看看